gpt4 book ai didi

Android BLE GATT 断开连接与设备断开连接

转载 作者:行者123 更新时间:2023-11-29 16:57:28 26 4
gpt4 key购买 nike

我正在开发一个与自定义蓝牙设备通信的 Android 应用程序。调用 BluetoothGatt.Disconnect() 后,我看到调用了 OnConnectionStateChange 回调,新状态为 Disconnected,但是,似乎发生这种情况与设备本身实际断开连接之间存在滞后。例如,如果我用已连接的设备调用 BluetoothManager.GetConnectionState(...),它仍会返回 Connected。有时 GetConnectionState 返回 Disconnected 需要几。这是正常的吗?有没有可能是我在我的应用程序中做错了什么导致了这种情况?例如从非 UI 踏板断开连接,或类似的东西?或者,是否有可能是物理蓝牙设备本身没有正确处理断开连接,可能没有及时完成断开连接事件?

最佳答案

Android的BLE系统太乱了。我已经看到了您所描述的内容,但更糟糕的是 - 您与 Android 断开连接,但在后台它与您的外围设备保持持久连接。

通常需要 30 秒才能最终断开连接,有时需要几分钟!一切都取决于您当时使用的手机。

如果你有能力,我强烈建议给外设添加一个断开连接的特性,这样你就可以通过编写断开连接请求来真正断开连接,让外设强制断开连接——然后 Android 会接收它。

我看到的好处是它始终有效(因为“硬”断开连接总是由 Android 接收,而“软”断开连接请求可能会在某些手机上引起一些问题)。通常“好”手机不会表现出这种行为(尤其是 Marshmallow 等),但在那些 KitKat 时代......哇......

另一个好处...如果您使用的是 iOS,您可以更快地扫描或重新连接到断开连接的外围设备。

关于Android BLE GATT 断开连接与设备断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44521828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com