Android BLE 应用程序 Gatt 回拨停止响应



我正在尝试开发一个具有多个活动的BLE应用程序来控制自定义BLE设备。我现在遇到的问题是在设备超出范围或连接丢失时进行处理。

该应用程序具有处理扫描和 Gatt 连接的 BLE 服务。用户在第一个活动中选择设备后,第二个活动将启动,应用将连接到所选设备。在第二个活动中,用户可以从 4 个不同的菜单中选择,每个菜单都会启动一个新活动。

一种选择是设备控制,用于启动/停止数据采集。 在任何给定时间,如果BLE连接丢失,都会显示一个警报对话框,允许用户重新连接到设备。但是,当重新连接时第三个活动(设备控制(中的连接丢失时,如果我随后退出该活动 并再次恢复,应用不再更新状态。

抱歉,我知道这可能非常模糊,但我真的不知道是什么导致了这个问题。我已将其缩小到BLE服务,该服务会自动将BLE请求(写入,读取等(排队,并在Gatt不忙时执行它们。出现问题是因为 Gatt 从第二次活动回来后从不清除繁忙的标志,但我不知道为什么。

感谢您的帮助。

这个问题似乎已经通过device.connectGatt(contex,false,callback)进行第一次直接连接来解决,然后由BluetoothGatt.connect()处理后续连接,如蓝牙LeGatt示例所示。还要在每次重新连接尝试之前调用BlutoothGatt.disconnect(),这样应用程序就不会挂起等待 Gatt 连接超时。

最新更新