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