HarmonyOS 鸿蒙Next 蓝牙场景下,对端设备断链,本端未监听到回调
HarmonyOS 鸿蒙Next 蓝牙场景下,对端设备断链,本端未监听到回调
蓝牙对端设备主动断开连接,"BLEConnectionStateChange"监听未收到回调。
if (!this.clientDevice) {
Logger.error(TAG, `创建device失败`)
return
}
// 连接GattServer服务
this.clientDevice.connect();
// 订阅连接状态改变事件
this.clientDevice.on("BLEConnectionStateChange", this.onConnectionStateChange)
this.clientDevice.on("BLECharacteristicChange", this.onCharacteristicChange)
this.clientDevice.on("BLEMtuChange", bleGattService.onMtuChange)
// 获取gattServer设备名称
this.clientDevice.getDeviceName((err: BusinessError, data: string) => {
emitBleLog('getDeviceName success, deviceName = ' + JSON.stringify(data));
})
}
/**
* 系统蓝牙状态变化回调
* @param data
*/
private onConnectionStateChange(data: ble.BLEConnectionChangeState){
bleState.connectionState = data.state
switch (data.state){
case constant.ProfileConnectionState.STATE_DISCONNECTED:
emitBleLog("bluetooth connection statues: 断开连接");
bleGattService.close()
break;
case constant.ProfileConnectionState.STATE_CONNECTING:
emitBleLog("bluetooth connection statues: 正在连接");
break;
case constant.ProfileConnectionState.STATE_CONNECTED:
bleState.isPhysicalBleConnected = true
emitBleLog("bluetooth connection statues: 已连接");
// setTimeout(async ()=>{
if (bleGattService.clientDevice) {
// 获取server的services信息
bleGattService.clientDevice.getServices(bleGattService.gattServicesCallback)
// 读取信号强度
//todo:当前会报错,待解决
// bleGattService.clientDevice.getRssiValue((err, cbRssi) => {
// emitBleLog('return code = ' + JSON.stringify(err) + ', RSSI = ' + JSON.stringify(cbRssi))
// });
//
// bleGattService.requestMtu(0)
}
// }, 1000)
break;
case constant.ProfileConnectionState.STATE_DISCONNECTING:
emitBleLog("bluetooth connection statues: 正在断开连接");
break;
}
}
更多关于HarmonyOS 鸿蒙Next 蓝牙场景下,对端设备断链,本端未监听到回调的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS 鸿蒙Next 蓝牙场景下,对端设备断链,本端未监听到回调的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next系统中,针对蓝牙场景下对端设备断链而本端未监听到回调的问题,可能的原因及处理方式如下:
-
回调机制检查:
- 确认本端蓝牙回调注册是否成功,包括连接状态变化、断开连接等回调。
- 检查回调函数的实现,确保在回调触发时能够正确执行。
-
蓝牙状态同步:
- 验证本端蓝牙服务是否处于活动状态,且能正确反映蓝牙连接状态。
- 检查蓝牙协议栈的日志,确认是否有对端断链的日志记录。
-
错误处理:
- 检查代码中是否有对蓝牙错误码的正确处理,包括断开连接的错误码。
- 验证是否在断开连接后,本端蓝牙栈能够正确更新状态并触发相应的回调。
-
设备兼容性:
- 确认对端设备蓝牙版本及特性是否与本端设备兼容。
- 尝试使用其他蓝牙设备测试,排除对端设备特定问题。
-
系统日志:
- 查看系统日志,特别是蓝牙相关的日志,以获取更多关于断链事件的信息。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。