Пишу приложение для Android, которое принимает данные по bluetooth(картинку jpg), для тестирования использую программу HTerm и bluetooth передатчик. Проблема в том, что при передачи картинки в виде массива байт, не определяется конец передачи данных и метод Inputstream.read(bufer) не возвращает -1 а ждет, что ему еще передадут данные. Подскажите как с этим боротся.
private void methodTest(InputStream is) throws IOException {
// буфер для чтения, разумного объема
byte[] buffer = new byte[1024*64];
// Выходной поток
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// цикл чтения
while (true) {
// читаем данные в буфер
int readBytesCount = is.read(buffer);
Log.d(TAG, "Колличество байт readBytesCount" + readBytesCount);
if (readBytesCount!= -1) {
// данные были считаны - есть, что записать
Log.d(TAG, "Пишем в буфер " + readBytesCount);
baos.write(buffer, 0, readBytesCount);
} else {
// данные закончились
Log.d(TAG, "Данные закончились " + readBytesCount);
baos.flush();
baos.close();
data = baos.toByteArray();
Log.d(TAG, Arrays.toString(data));
Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length);
imageView.setImageBitmap(bitmap);
return;
}
}
}
Продвижение своими сайтами как стратегия роста и независимости