我目前正在开发一个使用低耗电蓝牙的应用程序(在 nexus4上进行测试)。在开始使用 Android 4.3中的官方 BLAPI 之后,我注意到在第一次连接一个设备之后,我很少能够再次成功地连接到该设备或任何其他设备。
遵循 给你指南,我可以成功地连接到一个设备,扫描服务和特性,读/写/接收通知,没有任何问题。然而,在断开连接和重新连接之后,我常常无法扫描服务/特性,或者无法完成读/写。我在日志里找不到任何关于这一切发生的原因。
一旦发生这种情况,我必须卸载应用程序,禁用蓝牙,并重新启动手机之前,将重新开始工作。
每当设备断开连接时,我确保对 BluetoothGatt 对象调用 close ()并将其设置为 null。有什么见解吗?
编辑:
日志转储: 对于这些日志,我植入了我的手机,并在/etc/bluetooth/bt _ stack. conf 中提高了相关项目的跟踪级别
成功连接 -重启手机并安装应用程序后的第一次尝试。我能够连接,发现所有的服务/特性,读/写。
失败的尝试1 -这是从上面的成功连接断开后的下一次尝试。似乎我能够发现特征,但第一次尝试读取返回一个空值,不久之后断开连接。
失败的尝试2 -一个我甚至不能发现服务/特性的例子。
编辑2:
我试图连接的设备是基于 TI 的 CC2541芯片。我得到了一个 TI 传感器标签(也是基于 CC2541)来玩玩,发现 TI 昨天为 SensorTag 发布了 一个安卓应用程序。然而,这个应用程序有 同样的问题。,我在另外两个 Nexus 4上测试了它,得到了相同的结果: 连接到 SensorTag 的第一次或第二次是成功的,但是(根据日志)之后没有发现服务,导致了各种各样的崩溃。我开始怀疑是不是这个芯片出了问题?