HarmonyOS 鸿蒙Next 5.1.0.228 BLE蓝牙服务刷新问题
HarmonyOS 鸿蒙Next 5.1.0.228 BLE蓝牙服务刷新问题 我有一款BLE设备,它有两种模式:
1、正常工作模式:对应正常业务的ServiceUUID(此时没有用于固件升级的ServiceUUID),可以使用该服务下对应的read & write characteristic进行BLE蓝牙传输。
2、固件升级模式:对应固件升级的ServiceUUID(此时没有用于正常业务serviceUUID),可以使用该服务下对应的write characteristic传输固件包。
3、这两种模式可以互相切换
操作步骤:
1)使用Flutter APP连接设备
2)让设备进入固件升级模式,升级完BLE设备,BLE设备会重启,重新进入正常工作模式
3)APP重新连接设备,发现它的服务列表没有刷新(还能找到用于固件升级的ServiceUUID),导致APP认为设备还是处于固件升级模式,无法正常使用(实际上设备已经是正常工作模式)
4)实测发现,其他品牌手机都是正常的,部分华为手机也是正常的,搭载了HarmonyOS NEXT最新系统的手机不正常
更多关于HarmonyOS 鸿蒙Next 5.1.0.228 BLE蓝牙服务刷新问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
提工单会快些,这里大部分都是些非技术问题
更多关于HarmonyOS 鸿蒙Next 5.1.0.228 BLE蓝牙服务刷新问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
学习了
在HarmonyOS NEXT 5.1.0.228中,BLE服务缓存机制可能更严格,导致设备模式切换后服务列表未及时更新。建议在设备重启后执行以下操作:
- 主动调用discoverServices()强制刷新服务列表
- 在重连前先执行GATT断开连接(disconnect)并等待1-2秒
- 检查是否启用了GATT缓存,可尝试通过反射调用BluetoothGatt的refresh()方法
这个问题可能与系统层BLE栈的缓存策略优化有关,建议在onConnectionStateChange回调中处理服务发现逻辑,确保每次连接都获取最新服务列表。