Androidで2つのAndroidデバイス間でBluetoothを使用してデータを送信することを実装しています。わかりやすくするために、私はほとんどの場合、文字列を渡してJSONまたは他の文字列形式として解析します。AndroidでBluetooth経由で文字列(バイト)を送信する
今私は、すべてのデータを受け取ったことを確認するために、データをどのように読み取るべきでしょうか?現在、私は次のようなアプローチを取っている:
byte[] buffer = new byte[1024];
while (!finished) {
// My class
MemoryStream ms = new MemoryStream();
int bytesRead = 0;
do {
bytesRead = input.read(buffer, 0, buffer.length);
ms.write(buffer, 0, bytesRead);
} while (bytesRead == buffer.length);
// Now process data
}
はしかし、これは他のデバイスに送信されたようinputStream.read()
はいつものように多くのバイト数を返します場合にのみ動作します。
たとえば、最初のデバイスが1234バイトを送信した場合、最初にread
を呼び出すと1024と2番目の210が返されます。または、最初のデバイスが1024バイトを送信した場合、最初にread
を呼び出して1024バイトが返され、 -1(ストリーム終了)。
私は正しいですか?または、送信されたすべてのデータが受信されたかどうかを判断する独自のメカニズムを実装する必要がありますか(または現在のチャンクを完了するのにもっと待つ必要がありますか)。