场景介绍
发起星闪扫描,可以扫描到正在发送星闪广播的外围设备。
接口说明
接口名 | 描述 |
---|---|
startScan(filters: Array<ScanFilters>, options?: ScanOptions): Promise | 启动星闪扫描。 |
stopScan(): Promise<void> | 停止星闪扫描。 |
on(type: ‘deviceFound’, callback: Callback<Array<ScanResults>>): void | 订阅扫描结果。 |
off(type: ‘deviceFound’, callback?: Callback<Array<ScanResults>>): void | 取消订阅扫描结果。 |
开发步骤
- 导入相关模块。
import { scan } from '@kit.NearLinkKit';
import { BusinessError } from '@kit.BasicServicesKit';
- 订阅扫描结果。
let onReceiveEvent:(data: Array<scan.ScanResults>) => void = (data: Array<scan.ScanResults>) => {
console.info('scan result addr:'+ data[0].address + 'name:' + data[0].deviceName);
}
try {
scan.on("deviceFound", onReceiveEvent);
// 订阅星闪扫描结果。返回的扫描结果中携带的地址为远端设备随机地址。
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
- 配置扫描参数,扫描过滤器配置期望的设备名称、地址等信息。
注意
a. 扫描过滤器至少携带一个过滤条件,否则扫描过滤器无效。
b. 过滤器可以配置多组,组之间的条件是或的关系,如步骤4所示。
c. 一组过滤器内的条件是与的关系,如下示例:address和deviceName同时满足才会上报。
let scanFilter1: scan.ScanFilters = {
address:"11:22:33:44:AA:BB", // 期望扫描到的外围设备1的地址
deviceName:"deviceName1" // 期望扫描到的外围设备1的名称
};
let scanFilter2: scan.ScanFilters = {
address:"22:33:44:AB:CD:EF", // 期望扫描到的外围设备2的地址
deviceName:"deviceName2" // 期望扫描到的外围设备2的名称
};
let scanOptions: scan.ScanOptions = {
scanMode: scan.ScanMode.SCAN_MODE_LOW_POWER
}
- 开启星闪扫描,参数配置在步骤3中构造。
try {
scan.startScan([scanFilter1, scanFilter2], scanOptions).then(() => {
console.info("start scan success");
});
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
- 停止星闪扫描。
try {
scan.stopScan().then(() => {
console.info("stop scan success");
});
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
- 取消订阅扫描结果,其中onReceiveEvent是在步骤2中注册的回调函数。
try {
scan.off("deviceFound", onReceiveEvent);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}