У меня есть приложение, которое использует bluetooth для получения некоторых данных (байтов) с другого устройства. все идет хорошо, но у меня небольшая проблема с получением всех байтов. После получения байтов я показываю их на тосте, просто чтобы проверить их. Когда другое устройство отправляет вместе 10 байтов (например: «ABCDEFGHIJ»), программа возьмет только первый байт «A» и покажет его в тосте, затем перейдет ко второй итерации и прочитает остальные 9 байтов и покажет « BCDEFGHIJ "на тосте. Вот мой код:
byte[] buffer = new byte[1024]; // Read 1K character at a time.
int bytes = 0; // Number of bytes.
while(true)
{
try
{
// Read from the InputStream.
bytes = bInStream.read(buffer);
// Send the obtained bytes to the MainActivity.
mainActivityHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
}
catch(IOException e)
{
connectionLost();
break;
}
}
В MainActivity у меня есть:
// The Handler that gets information back from the BluetoothManager.
private final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch(msg.what)
{
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer.
String readMessage = new String(readBuf, 0, msg.arg1);
Toast.makeText(MainActivity.this, readMessage, Toast.LENGTH_SHORT).show();
break;
// ...
}
}
};
Как я могу получить все байты вместе ?!