首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android ACL_DISCONNECTED有时会延迟

Android ACL_DISCONNECTED有时会延迟
EN

Stack Overflow用户
提问于 2017-04-05 16:41:33
回答 1查看 1.9K关注 0票数 1

我正在开发一个安卓应用程序(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)。

  • 这是已知(预期)行为吗?
  • 是否有办法缓解这种issue?...to,以确保断开确实及时发生?
  • 有没有一种更直接的方法--例如,通过API调用--来判断连接是否仍处于正常状态,而不是接收与ACL相关的广播?
EN

回答 1

Stack Overflow用户

发布于 2017-04-06 20:14:46

如果BLE设备停止广播而不是发送断开信号,则会发生此问题。如果BLE设备没有发送断开信号,Android设备认为连接是打开的,它等待某个时间(5-20秒),然后用超时状态代码调用onconnectionstatechange()。如果你能让BLE设备发送断开信号而不是停止广播,它应该解决问题。希望这能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43236994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档