我遇到了一个让我完全摸不着头脑的问题,主要是因为它的持久性。
我正在编写一个小型 Android 应用程序来与我的 Bluegiga BLE113 进行通信。我以前连接过这个设备,但我最近做了一个 GATT 修改,它没有反映在 Android 设备上(在我尝试过的任何应用程序中 - 我从桌面和 iOS 应用程序验证我的 GATT 已更新正如预期的那样)。
我尝试关闭/打开蓝牙并重新启动我的 Nexus 7,但仍然没有。最后,我绝望了,尝试了这里提到的解决方案:https ://stackoverflow.com/a/22709467/992509 ,它使用反射来命中一个名为刷新的私有 BluetoothGatt 方法。
它似乎工作得很好,因为我的新服务出现了,但是,我遇到的是我的服务(只有 1 个特征)显示了数百个具有相同 UUID 的特征。每次我运行我的应用程序时,相同特征的数量都会增加,甚至通过设备重启和 BT 循环。
最后,我绝望了,对我的 Nexus 进行了恢复出厂设置(这是一个测试设备,所以我不在乎)。没有解决问题,这张图片显示了我所看到的(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。