HarmonyOS 鸿蒙Next BLE开始扫描时,订阅扫描结果与结束扫描时取消订阅扫描结果这两个方法传入的callback需要传相同的callback对象吗?

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next BLE开始扫描时,订阅扫描结果与结束扫描时取消订阅扫描结果这两个方法传入的callback需要传相同的callback对象吗?

BLE开始扫描时,订阅扫描结果与结束扫描时取消订阅扫描结果这两个方法传入的callback需要传相同的callbakc对象吗??在官方的文档中,在停止扫描后,取消订阅扫描结果时传入了不同的callback;下面是官方示例,示例中ble.off传入了一个新的callback,并在callbakc响应中打印了 off success;还问一下,这个callback是扫描结果的的回调,在ble.off()方法中这个callback的回调响应能代表off方法执行成功吗?
// 3 关闭扫描
public stopScan() {
try {
ble.off(‘BLEDeviceFind’, (data: Array<ble.ScanResult>) => { // 取消订阅扫描结果
console.info(TAG, ‘off success’);
});
ble.stopBLEScan();
console.info(TAG, ‘stopBleScan success’);
} catch (err) {
console.error(TAG, 'errCode: ’ + (err as BusinessError).code + ', errMessage: ’ + (err as BusinessError).message);
}
}
}
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ble-development-guide-V5


更多关于HarmonyOS 鸿蒙Next BLE开始扫描时,订阅扫描结果与结束扫描时取消订阅扫描结果这两个方法传入的callback需要传相同的callback对象吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
callbakc对象是回调函数 ble.on('BLEDeviceFind') callback:表示回调函数的入参,发现的设备集合。回调函数由用户创建通过该接口注册。(必填) ble.off('BLEDeviceFind') callback:表示取消订阅BLE设备发现事件上报。不填该参数则取消订阅该type对应的所有回调。(非必填) 参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bluetooth-ble-V5#bleonbledevicefind
  // 3 关闭扫描
  public stopScan() {
    try {
      ble.off('BLEDeviceFind', (data: Array<ble.ScanResult>) => { // 取消订阅扫描结果
        console.info(TAG, 'off success');
      });
      ble.stopBLEScan();
      console.info(TAG, 'stopBleScan success');
    } catch (err) {
      console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }
  }
}
 

上述代码中

ble.off('BLEDeviceFind', (data: Array<ble.ScanResult>) => { // 取消订阅扫描结果 console.info(TAG, 'off success'); }); console.info(TAG, 'off success');成功打印代表 ble.off执行成功,如果失败就会执行catch (err) console.info(TAG, 'stopBleScan success');成功打印代表ble.stopBLEScan();成功执行 如果失败就会执行catch (err)

更多关于HarmonyOS 鸿蒙Next BLE开始扫描时,订阅扫描结果与结束扫描时取消订阅扫描结果这两个方法传入的callback需要传相同的callback对象吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,针对BLE(Bluetooth Low Energy)扫描操作,开始扫描时订阅扫描结果与结束扫描时取消订阅扫描结果所传入的callback对象不需要是同一个实例。

具体来说,HarmonyOS的BLE扫描API设计允许开发者在启动扫描时传入一个callback用于接收扫描到的设备信息,而在停止扫描或取消订阅时,传入的是用于标识取消订阅操作的标识或参数,而非必须严格是之前传入的同一个callback实例。

系统内部通过管理这些callback的注册与注销来确保资源正确释放和避免内存泄漏。因此,开发者可以灵活地使用不同的callback实例来管理扫描的生命周期,只要确保在适当的时候调用相应的API来启动和停止扫描即可。

如果在实际开发过程中遇到特定问题,比如callback未正确触发或扫描未能如期停止,应检查API调用顺序和参数传递是否正确,以及系统日志以获取更多调试信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部