Чтение входного потока Bluetooth в Android - PullRequest
0 голосов
/ 08 декабря 2011

Я разрабатываю приложение, которое считывает данные с биометрических устройств с помощью Bluetooth, когда я отправляю запрос на биометрическое устройство для отправки данных, биометрическое устройство показывает ответ с обновлением экрана, но когда я вызываю функцию для чтения входного потока для получения ответа, функция in_stream.available() вернуть 0. Я не могу отследить корень проблемы. Я тестировал то же самое биометрическое устройство с другим приложением, оно работает нормально. Помогите мне, если у кого-то есть идеи по этому вопросу. Заранее спасибо.

1 Ответ

3 голосов
/ 08 декабря 2011

Не использовать метод available ().Это сломано в большинстве реализаций.Вы должны постоянно читать с read () или read (byte []).Если протокол позволяет узнать размер ожидаемых данных (т. Е. Некоторые первые байты, указывающие, сколько данных поступает впоследствии), вы можете просто прочитать этот объем данных.

Если объем данных неизвестен или ожидаетсяАсинхронная передача данных, тогда вы должны управлять записью / чтением в / из потоков в отдельном потоке.Это относится не только к Bluetooth, но и к любой базовой обработке потоков (сеть, файлы и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...