android - 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)
你知道我做错了什么吗?
谢谢你。
解决方案
推荐阅读
- javascript - SendGrid 不使用 HTML 输入中的 JavaScript 将电子邮件添加到联系人列表
- php - 在 PHP 中定义 webroot 路径
- javascript - cloudinary的销毁方法没有反应
- reactjs - 有没有办法将 Next.js 的 _app.js 中实现的代码的反射保留在特定目录中?
- arrays - 如何使用 Julia 中不同数组给出的形状值从伽马分布中采样数组?
- azure-data-factory - ADF 表达式 @and?
- dataframe - 具有多种数据类型的 Pyspark SQL 数据帧映射
- jwt - .Net Framework 的 OWIN 中间件是否验证传入的 JWT 令牌?
- python - 类型错误 - 不可散列的类型列表 - 方法调用之前
- go - 使用 Rod on Go 或 Chrome Devtools 协议关闭紧急窗口