В настоящее время я разрабатываю приложение, которое будет использовать Bluetooth Low Energy (тестирование на Nexus 4). После начала работы с официальными API-интерфейсами BLE в Android 4.3 я заметил, что после подключения устройства в первый раз я редко могу успешно подключиться к этому устройству или другому устройству снова.
Следуя руководству здесь, я могу успешно подключиться к устройству, сканировать службы и характеристики, а также читать/писать/получать уведомления без каких-либо проблем. Однако после отсоединения и повторного подключения я часто не могу ни сканировать службы/характеристики, либо не смог завершить чтение/запись. Я не могу найти ничего в журналах, чтобы указать, почему это происходит.
Как только это произойдет, я должен удалить приложение, отключить Bluetooth и перезагрузить телефон, прежде чем он начнет работать снова.
Всякий раз, когда устройство отключено, я вызываю вызов close() в объекте BluetoothGatt и устанавливаю его в значение null. Любые идеи?
EDIT:
Лог-дампы: для этих журналов я укоренил свой телефон и увеличил уровни трассировки связанных элементов в файле /etc/bluetooth/bt _stack.conf
Успешное подключение - Первая попытка после перезагрузки телефона и установки приложения. Я могу подключиться, обнаружить все сервисы/характеристики и читать/писать.
Failed Attempt 1 - Это следующая попытка после отсоединения от успешного соединения выше. Кажется, мне удалось обнаружить характеристики, но первая попытка чтения вернула нулевое значение и вскоре была отключена.
Failed Attempt 2 - пример, когда я даже не могу обнаружить службы/характеристики.
ИЗМЕНИТЬ 2:
Устройство, к которому я пытаюсь подключиться, основано на чипе TI CC2541. Я получил TI SensorTag (также основанный на CC2541), чтобы поиграть и обнаружил, что TI выпустил приложение для Android для SensorTag вчера. Тем не менее, это приложение имеет ту же проблему. Я тестировал это на двух других Nexus 4 с тем же результатом: соединение с SensorTag успешно выполняется первый или второй раз, но (в соответствии с журналами) не удается в дальнейшем обнаруживать службы, вызывая всевозможные сбои. Я начинаю задаваться вопросом, не проблема с этим конкретным чипом?