首页 > 解决方案 > BLE 设备断开连接,然后是两个相反的异常 BleAlreadyConnectedException vs BleDisconnectedException

问题描述

我正在开发 DFU OTA(无线设备固件更新)。

为此,我必须连接设备,然后发送命令命令设备切换到引导加载程序模式。此命令后设备重新启动,因此连接丢失。就在这种状态之后,如果我尝试重新连接

rxBledevice
?.establishConnection(false)
?.subscribe({/**/},{/**/})

引发错误 BleAlreadyConnectedException

然后,如果我向设备发送任何命令,例如

rxBleConnection
?.writeCharacteristic(UUID, ba)
?.subscribe({/**/},{/**/})

引发错误,BleDisconnectedException。

我尝试处置连接观察者,但没有任何改变。唯一的方法(不可接受)是在 BleDevice 重启并断开连接后重启应用程序。

如果有帮助,我还得到了这些日志:

E/BLE: write control OTA failed : com.polidea.rxandroidble2.exceptions.BleGattCallbackTimeoutException: GATT exception from MAC address 00:0B:57:4C:6C:9B, with type BleGattOperation{description='CHARACTERISTIC_WRITE'}
D/BluetoothGatt: onClientConnectionState() - status=22 clientIf=7 device=00:0B:57:4C:6C:XX
E/BLE: error connection BLE Disconnected from 00:0B:57:4C:6C:9B with status 22 (UNKNOWN)

你知道我做错了什么吗?

谢谢你。

标签: androidrxandroidble

解决方案


推荐阅读