鸿蒙NEXT BRTBeacon SDK

简介

智石科技推出鸿蒙NEXT BRTBeacon SDK,这是一套适配鸿蒙NEXT版本的Beacon扫描库,基于API 12进行的封装,开发者可以通过调用该SDK,轻松实现对Beacon广播信号的扫描和模拟,在鸿蒙系统上构建基于Beacon相关的应用程序。

开发指南

一、搭建鸿蒙开发环境

开发鸿蒙应用需要使用鸿蒙的IDE进行开发,具体内容请参考鸿蒙官网开发文档

  1. 开始前请参考下载与安装软件配置开发环境,完成DevEco Studio的安装和开发环境配置。

  2. 开发环境配置完成后,请参考创建和运行Hello World创建工程。

  3. 工程创建完成后,请使用搭载鸿蒙NEXT的手机运行工程。

二、集成SDK

1、下载SDK开发包

https://files.brtmap.com/sdk/harmony/BRTBeacon_SDK_HarmonyNext_1.0.0.zip

2、添加库到项目

  1. 解压SDK包lib目录内的 BRTBeaconLibrary-xxxx.har(xxxx为版本号)。

  2. 在目标工程中根目录中创建libs文件夹

  3. 将BRTBeaconLibrary-xxxx.har复制到工程的libs目录里

3、配置工程

打开工程根目录下的oh-package.json5文件,添加对BRTBeacon库的引用:

"dependencies": {
"bright-beacon-library": "file:./libs/BRTBeaconLibrary-xxxx.har"
}

4、声明权限

打开工程entry内的module.json5文件,在requestPermissions标签下添加蓝牙权限的声明:

"requestPermissions": [
{
"name": "ohos.permission.ACCESS_BLUETOOTH",
"reason": "$string:reason_access_bluetooth",
"usedScene":{
"abilities": [
"EntryAbility"
],
"when": "always"
}
}
]

5、申请运行时权限

以entry的pages/Index.ets为例,演示检查并申请蓝牙权限

"requestPermissions": [
{
"name": "ohos.permission.ACCESS_BLUETOOTH",
"reason": "$string:reason_access_bluetooth",
"usedScene":{
"abilities": [
"EntryAbility"
],
"when": "always"
}
}
]

三、扫描Beacon

以下代码显示在pages/BeaconScan.ets内添加扫描功能:

import { BRTBeacon, BRTBeaconScanner } from 'bright-beacon-library'
@Entry
@Component
struct BeaconScan {
beaconScanner = new BRTBeaconScanner()
onDidBuild(): void {
// 更新Beacon列表
this.beaconScanner.on('update', this.updateCallback)
// 新增Beacon列表
this.beaconScanner.on('newBeacon', this.newCallback)
// 丢失Beacon列表
this.beaconScanner.on('goneBeacon', this.goneCallback)
}
aboutToAppear(): void {
this.beaconScanner.startScan()
}
aboutToDisappear(): void {
clearInterval(this.taskHandler)
this.beaconScanner.stopScan()
}
private updateCallback = (beacons: Array<BRTBeacon>) => {
// Beacon更新回调
}
private newCallback = (beacons: Array<BRTBeacon>) => {
// Beacon新增回调
}
private goneCallback = (beacons: Array<BRTBeacon>) => {
// Beacon丢失回调
}
}

四、模拟Beacon

以下代码显示在模拟Beacon广播:

let uuid: string = "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"
let major: number = 1000
let minor: number = 2000
beaconAdvertiser: BRTBeaconAdvertiser = new BRTBeaconAdvertiser(uuid, major, minor);
beaconAdvertiser.startAdvertising();
//退出时关闭广播功能
beaconAdvertiser.stopAdvertising();

API接口

一、Beacon数据

BRTBeacon

属性类型说明
deviceIdstring设备ID
deviceNamestring设备名称
uuidstringUUID
majornumber范围【0..65535】
minornumber范围【0..65535】
rssinumber信号强度
txPowernumber发射功率
isBBnumber是否包含BRTBeacon扩展数据
msPower测量功率【BRTBeacon有效】
hardwareTypenumber设备型号【BRTBeacon有效】
firmwareNumnumber固件版本【BRTBeacon有效】
deviceModenumber设备模式 0:开发模式, 1:部署模式 【BRTBeacon有效】
batterynumber电量【0..100】
addressnumber设备蓝牙MAC【BRTBeacon有效】

二、扫描Beacon

BRTBeaconScanner

方法/属性参数返回结果说明
startScan()开启Beacon扫描
stopScan()关闭Beacon扫描
on(type, callback)type: string
(详见 type表格)
callback: Callback> 状态更新接口回调函数
添加扫描监听
off(type, callback)type: string(参考on方法)
callback: Callback> 状态更新接口回调函数
移除扫描监听
scanAutoRetryboolean类型
true: 开启自动重试 【默认】
false: 关闭自动重试
true: 自动重试开启
false: 自动重试关闭
扫描失败后,将自动重试
【注意:需在扫描开启前设置】
beaconUpdateMillisnumber类型 更新周期 (毫秒) 【默认 1000毫秒】获取更新周期(毫秒)获取、设置更新周期
【注意:需在扫描开启前设置】
scanDutyModeble.ScanDuty类型 功耗模式【默认 低延迟】
【注:请参考鸿蒙NEXTble.ScanDuty文档说明
设置扫描功耗模式
【注意:需在扫描开启前设置】

三、模拟Beacon

BRTBeaconAdvertiser

方法参数返回结果说明
constructor(uuid, major, minor)uuid: string uuid实符串
major:number 范围【0-65535】
minor:number 范围【0-65535】
构造需要广播的模拟的Beacon数据
startAdvertising()开启Beacon广播
stopAdvertising()关闭Beacon广播