我正在开发一个安卓应用程序(API 23+),它通过BLE与设备进行通信。不涉及配对/结合。
交互的快乐之路是,应用程序连接然后向设备发送一条消息,然后设备再发送一个回复,然后它们就会断开连接。
在描述我在Android BLE unexpectedly reconnects potentially from PBAP / MAP Bluetooth profiles中询问的奇怪行为时,我创建了一个简单的服务来监视低级别的蓝牙连接;它监听BluetoothDevice.ACTION_ACL_CONNECTED和BluetoothDevice.ACTION_ACL_DISCONNECTED的广播。
虽然大多数情况下,连接/断开连接在应用程序和设备之间很好地对应,但有时应用程序会在应用程序和设备关闭连接后5到20秒收到断开连接通知。我已经证实设备实际上已经关闭,应用程序日志都显示系统正确地关闭了连接。
在这些情况下,如果应用程序在ACL_DISCONNECTED广播之前再次尝试与设备连接,它要么会收到错误,要么随后的连接请求在ACL_DISCONNECTED广播之后排队并被启动。
这似乎并不是特定于设备--我用各种各样的产品和型号进行测试--也不是API版本(23-25)。
发布于 2017-04-06 20:14:46
如果BLE设备停止广播而不是发送断开信号,则会发生此问题。如果BLE设备没有发送断开信号,Android设备认为连接是打开的,它等待某个时间(5-20秒),然后用超时状态代码调用onconnectionstatechange()。如果你能让BLE设备发送断开信号而不是停止广播,它应该解决问题。希望这能有所帮助
https://stackoverflow.com/questions/43236994
复制相似问题