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