У меня есть проблема, из-за которой я совершенно сбит с толку, в основном из-за того, насколько она постоянна.
Я писал небольшое приложение для Android для связи с моим Bluegiga BLE113. Я подключался к этому устройству раньше, но недавно сделал модификацию GATT, которая не отражалась на устройстве Android (ни в одном из приложений, которые я пробовал, и я проверил с настольного компьютера и приложения iOS, что мой GATT был обновлен как и ожидалось).
Я пытался выключить/включить Bluetooth и перезапустить свой Nexus 7, и все равно ничего. Наконец, я отчаялся и попробовал упомянутое здесь решение: https://stackoverflow.com/a/22709467/992509, которое использует отражение для обращения к частному методу BluetoothGatt, называемому Refresh.
Казалось, что это работает отлично, поскольку моя новая служба появлялась, однако я столкнулся с тем, что моя служба (только с одной характеристикой) показывала несколько сотен характеристик с одним и тем же UUID. Количество идентичных характеристик увеличивалось каждый раз, когда я запускал свое приложение, и даже при перезапуске устройства и циклическом включении BT.
В конце концов, я отчаялся и сбросил настройки своего Nexus до заводских настроек (это тестовое устройство, так что мне все равно). Ничего не исправил, и это изображение показывает то, что я вижу (10 тысяч характеристик):
Мой BLE113 GATT выглядит так:
<service uuid="deadbeef-cdcd-cdcd-cdcd-cdcdcdcdcdcd">
<description>Debugging Service</description>
<characteristic uuid="deadbeef-0000-0000-0000-000000000000" id="xgatt_debug">
<description>Debugging output</description>
<properties read="true" notify="true" />
<value length="20" />
</characteristic>
</service>
Код Android в основном представляет собой просто BluetoothGatt.discoverServices() (это первый раз, когда я вижу это).
И снова я попытался сбросить настройки BT, перезапустить свой Nexus и выполнить сброс до заводских настроек. Кроме того, я подтвердил, что мое периферийное устройство BLE работает точно так, как ожидалось, через настольное приложение и iOS.
Я использую Nexus 7, использую 5.0.2 и ориентируюсь на 4.4 в своем приложении.