В своих приложениях я отслеживаю ошибки ввода-вывода.Если произойдет успешное read()
, я сбрасываю счетчики.Если счетчики ошибок поднимаются достаточно высоко (обычно 4-5 - это хорошее число), то я считаю соединение разорванным и продолжаю разрывать его и перестраивать.
В SDK говорится о намерении изменить состояние, но мне не ясно, относится ли оно к определенному соединению или к самому адаптеру Bluetooth здесь :
При желании ваше приложение также может прослушивать широковещательный объект ACTION_STATE_CHANGED, который система будет транслировать при каждом изменении состояния Bluetooth.Эта трансляция содержит дополнительные поля EXTRA_STATE и EXTRA_PREVIOUS_STATE, содержащие новые и старые состояния Bluetooth, соответственно.Возможные значения для этих дополнительных полей: STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF и STATE_OFF.Прослушивание этой трансляции может быть полезно для обнаружения изменений, внесенных в состояние Bluetooth во время работы приложения.