NearLink Kit(星闪服务)- 发送星闪广播

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

场景介绍

发送星闪广播,广播数据可以被支持星闪能力的中心设备扫描到。

接口说明

接口名描述
startAdvertising(advertisingParams: AdvertisingParams): Promise<number>启动星闪广播。
stopAdvertising(advertisingId: number): Promise<void>停止星闪广播。
on(type: ‘advertisingStateChange’, callback: Callback<AdvertisingStateChangeInfo>): void订阅星闪广播状态变化事件。
off(type: ‘advertisingStateChange’, callback?: Callback<AdvertisingStateChangeInfo>): void取消订阅星闪广播状态变化事件。

开发步骤

  1. 导入相关模块。
import { advertising } from '@kit.NearLinkKit';
import { BusinessError } from '@kit.BasicServicesKit';
  1. 订阅星闪广播状态变化事件。
let onReceiveEvent:(data: advertising.AdvertisingStateChangeInfo) => void = (data: advertising.AdvertisingStateChangeInfo) => {
  console.info('advertisingId:'+ data.advertisingId);
  console.info('advertisingState:'+ data.state);
}
try {
  advertising.on('advertisingStateChange', onReceiveEvent);
} catch (err) {
  console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
  1. 构造用户需要的广播参数及数据。
let manufactureValueBuffer = new Uint8Array(4);
manufactureValueBuffer[0] = 1;
manufactureValueBuffer[1] = 2;
manufactureValueBuffer[2] = 3;
manufactureValueBuffer[3] = 4;
let serviceValueBuffer = new Uint8Array(4);
serviceValueBuffer[0] = 4;
serviceValueBuffer[1] = 6;
serviceValueBuffer[2] = 7;
serviceValueBuffer[3] = 8;
console.info('manufactureValueBuffer = '+ JSON.stringify(manufactureValueBuffer));
console.info('serviceValueBuffer = '+ JSON.stringify(serviceValueBuffer));
let setting: advertising.AdvertisingSettings = {
  interval:5000,
  power:advertising.TxPowerMode.ADV_TX_POWER_LOW
};
let manufactureDataUnit: advertising.ManufacturerData = {
  manufacturerId:4567,
  manufacturerData:manufactureValueBuffer.buffer
};
let serviceDataUnit: advertising.ServiceData = {
  serviceUuid:"37bea880-fc70-11ea-b720-000000001234",
  serviceData:serviceValueBuffer.buffer
};
let advData: advertising.AdvertisingData = {
  serviceUuids:["37bea880-fc70-11ea-b720-000000001234"],
  manufacturerData:[manufactureDataUnit],
  serviceData:[serviceDataUnit]
};
let advertisingParams: advertising.AdvertisingParams = {
  advertisingSettings: setting,
  advertisingData: advData
};
  1. 开启星闪广播,返回advertisingId表示当前广播索引。
let advId = -1;
try {
  advertising.startAdvertising(advertisingParams).then((advertisingId:number) => {
    advId = advertisingId;
    console.info('advertising id:'+ JSON.stringify(advId));
  });
} catch (err) {
  console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
  1. 停止星闪广播,其中advId是步骤4开启广播后返回的advertisingId。
try {
  advertising.stopAdvertising(advId).then(() => {
      console.info("stop advertising success");
    });
} catch (err) {
  console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
  1. 取消订阅星闪广播状态变化事件。
try {
  advertising.off('advertisingStateChange', onReceiveEvent);
} catch (err) {
  console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RZer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值