4

我遇到了一个让我完全摸不着头脑的问题,主要是因为它的持久性。

我正在编写一个小型 Android 应用程序来与我的 Bluegiga BLE113 进行通信。我以前连接过这个设备,但我最近做了一个 GATT 修改,它没有反映在 Android 设备上(在我尝试过的任何应用程序中 - 我从桌面和 iOS 应用程序验证我的 GATT 已更新正如预期的那样)。

我尝试关闭/打开蓝牙并重新启动我的 Nexus 7,但仍然没有。最后,我绝望了,尝试了这里提到的解决方案:https ://stackoverflow.com/a/22709467/992509 ,它使用反射来命中一个名为刷新的私有 BluetoothGatt 方法。

它似乎工作得很好,因为我的新服务出现了,但是,我遇到的是我的服务(只有 1 个特征)显示了数百个具有相同 UUID 的特征。每次我运行我的应用程序时,相同特征的数量都会增加,甚至通过设备重启和 BT 循环。

最后,我绝望了,对我的 Nexus 进行了恢复出厂设置(这是一个测试设备,所以我不在乎)。没有解决问题,这张图片显示了我所看到的(10k 特征):

具有 10k 特性的 BluetoothGatt

我的 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。

4

1 回答 1

0

您正在实施 hack 以调用未公开可用的方法。您不知道针对您定制的固件对该方法进行了哪些修改。

该 hack 对某些人有效(如您展示的问答中),但不能保证在任何地方都有效。

于 2015-04-01T08:25:39.397 回答