BluetoothGatt показывает 10 000 идентичных характеристик для обслуживания

У меня есть проблема, из-за которой я совершенно сбит с толку, в основном из-за того, насколько она постоянна.

Я писал небольшое приложение для Android для связи с моим Bluegiga BLE113. Я подключался к этому устройству раньше, но недавно сделал модификацию GATT, которая не отражалась на устройстве Android (ни в одном из приложений, которые я пробовал, и я проверил с настольного компьютера и приложения iOS, что мой GATT был обновлен как и ожидалось).

Я пытался выключить/включить Bluetooth и перезапустить свой Nexus 7, и все равно ничего. Наконец, я отчаялся и попробовал упомянутое здесь решение: https://stackoverflow.com/a/22709467/992509, которое использует отражение для обращения к частному методу BluetoothGatt, называемому Refresh.

Казалось, что это работает отлично, поскольку моя новая служба появлялась, однако я столкнулся с тем, что моя служба (только с одной характеристикой) показывала несколько сотен характеристик с одним и тем же UUID. Количество идентичных характеристик увеличивалось каждый раз, когда я запускал свое приложение, и даже при перезапуске устройства и циклическом включении BT.

В конце концов, я отчаялся и сбросил настройки своего Nexus до заводских настроек (это тестовое устройство, так что мне все равно). Ничего не исправил, и это изображение показывает то, что я вижу (10 тысяч характеристик):

BluetoothGatt с характеристиками 10k

Мой 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 в своем приложении.


person SJoshi    schedule 21.03.2015    source источник


Ответы (1)


Вы реализуете хак, чтобы вызвать метод, который не был общедоступным. Вы не знаете, какие модификации были внесены в этот метод для вашей кастомизированной прошивки.

У некоторых хак сработал (как вы показали в вопросах и ответах), но нельзя гарантировать, что он сработает везде.

person Bogdan Alexandru    schedule 01.04.2015