2011-12-08 17 views
0

バイオメトリックデバイスにデータを送信する際にBluetoothを使用してデータを読み取るアプリケーションを開発しています。バイオメトリックデバイスはその表示画面を更新してレスポンスを表示しますが、応答を得るためのストリーム関数in_stream.available() return 0。私は問題の根をトレースすることができません。私はそれが正常に動作するいくつかの他のアプリと同じバイオメトリックデバイスをテストしている。 誰かがこの問題について考えている場合は助けてください。 ありがとうございます。アンドロイドでBluetooth入力ストリームを読む

答えて

3

available()メソッドを使用しません。ほとんどの実装で壊れています。あなたはread()またはread(byte [])を使って常に読まなければなりません。プロトコルによって予想されるデータのサイズ(後でどのくらいのデータが来るかを示す最初のバイト)がわかる場合は、そのデータ量だけを読み取ることができます。

データ量が不明な場合、または非同期データが送信されることが予想される場合は、別のスレッドでストリームへの書き込み/読み取りを管理する必要があります。これは、Bluetoothだけでなく、基本的なストリーム処理(ネットワーク、ファイルなど)にも適用されます。

+1

Yikes。他の人は、Androidでinputstream.read()が壊れていると言います。ソケットを閉じると解放されないので、Androidでreadを呼び出す前に常に利用可能かどうか確認する必要があります。 – Tom

関連する問題