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