我遇到了一个我完全陷入困境的问题,主要是因为它有多么持久。
我正在编写一个小型Android应用程序来与我的Bluegiga BLE113进行通信。之前我已连接到此设备,但我最近进行了GATT修改,但没有反映在Android设备上(在我尝试的所有应用中都没有 - 我在桌面和iOS应用中验证我的GATT已更新如预期的那样。)
我尝试关闭/打开蓝牙并重新启动我的Nexus 7,但仍然没有。最后,我非常绝望并尝试了这里提到的解决方案:https://stackoverflow.com/a/22709467/992509它使用反射命中一个名为refresh的私有BluetoothGatt方法。
它似乎工作得很好,因为我的新服务出现了,然而,我遇到的是我的服务(只有一个特征)显示了具有相同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。
答案 0 :(得分:0)
您正在实施黑客攻击,以便调用未公开的方法。您不知道对自定义固件的方法进行了哪些修改。
黑客为某些人工作(如你所展示的Q&amp; A),但不能保证在任何地方工作。