手机侧应用可以通过Wear Engine获取穿戴设备上的传感器信息,并通过打开、关闭命令控制获取传感器数据。
使用传感器相关接口前,需要向手机侧用户申请获取对应权限的授权
传感器类型 | 申请权限 |
---|---|
ECG、PPG、HR | [HEALTH_SENSOR]人体传感器 |
ACC、GYRO、MAG | [MOTION_SENSOR]运动传感器 |
说明
- 穿戴设备侧无对应的应用,手机侧应用也可以使用该能力获取穿戴设备传感器。
- 请确保穿戴设备和华为运动健康App处于连接状态。用户可进入App“设备”界面查看设备是否在线。开发者可调用[getConnectedDevices]方法了解设备是否在线,如果返回列表中不包含目标设备,则提醒用户重新连接该设备。
获取穿戴设备的传感器列表
// 步骤3 获取SensorClient客户端
let sensorClient: wearEngine.SensorClient = wearEngine.getSensorClient(getContext(this));
// 步骤4 获取指定连接设备的传感器列表
sensorClient.getSensorList(targetDevice.randomId).then((sensorList) => {
console.info(`Succeeded in getting sensor list, result is ${sensorList}`);
}).catch((error: BusinessError) => {
console.error(`Failed to get sensor list. Code is ${error.code}, message is ${error.message}`);
})
订阅指定传感器数据上报
-
核对传感器列表中是否存在目标传感器。
-
订阅或取消订阅传感器数据上报。
let sensorClient: wearEngine.SensorClient = wearEngine.getSensorClient(getContext(this));
let sensorList: wearEngine.Sensor[] = await sensorClient.getSensorList(targetDevice.randomId);
sensorList.forEach((sensor, idx, arr) => {
if (sensor.type === wearEngine.SensorType.ACCELEROMETER) {
let callback = (sensorResult: wearEngine.SensorResult) => {
console.info(`Succeeded in getting sensor result, result is ${sensorResult}`);
}
// 订阅传感器数据上报
sensorClient.subscribeSensor(targetDevice.randomId, wearEngine.SensorType.ACCELEROMETER, callback).then(() => {
console.info(`Succeeded in subscribing sensor data.`);
}).catch((error: BusinessError) => {
console.error(`Failed to subscribe sensor data. Code is ${error.code}, message is ${error.message}`);
})
// 取消传感器数据上报
sensorClient.unsubscribeSensor(targetDevice.randomId, wearEngine.SensorType.ACCELEROMETER, callback).then(() => {
console.info(`Succeeded in unsubscribing sensor data.`);
}).catch((error: BusinessError) => {
console.error(`Failed to unsubscribe sensor data. Code is ${error.code}, message is ${error.message}`);
})
}
})
说明
- 传感器成功打开后,会根据每个传感器的上报周期,连续不断的通过[subcribeSensor]方法入参的回调函数上报数据,数据上报时长可由开发者通过取消订阅传感器接口自行控制。每组数据都有时间戳属性,建议开发者根据时间戳进行数据对齐。
- 传感器分为多通道传感器,如PPG、ECG,和非多通道传感器,如ACC。对于多通道传感器上报的数据,可以通过[SensorData] 中的channel字段来区分通道。
- 设备连接状态断开,设备会停止传感器数据的上报,需要开发者主动订阅设备的连接状态,设备重新连接上后主动调用[subcribeSensor] 方法订阅指定传感器数据上报。
穿戴设备传感器数据格式及样例
说明
数据上报数量非固定,示例中给出的是通常上报结果,实际有可能根据设备原因增加或者减少数据。
传感器 | 支持多通道 | 采集周期(ms) | 上报周期(ms) | 数据格式 | 数据样例 |
---|---|---|---|---|---|
ACC | No | 10 | 100 | 1次上报10组,每组3个数据,分别代表x轴、y轴、z轴加速度,共30个数据。单位:m/s^2,4096为1个重力加速度g | [34303.0, 10753.0, 54799.0, 33023.0, 15617.0, 2576.0, 33535.0, 9729.0, 5136.0, 24063.0, 6145.0, 62479.0, 23295.0, 6145.0, 58895.0, 35071.0, 9729.0, 57359.0, 46335.0, 10497.0, 53263.0, 55039.0, 4609.0, 57359.0, 42495.0, 2305.0, 60943.0, 41471.0, 64768.0, 57359.0]备注:ACC、GYRO原始数据值范围为有符号Short,目前上报后的数据值范围为无符号Short,需要开发者自行进行转换。 |
GYRO | No | 10 | 100 | 1次上报10组,每组3个数据,分别代表x轴、y轴、z轴角速度,共30个数据。单位:70mdps/LSB | [34303.0, 10753.0, 54799.0, 33023.0, 15617.0, 2576.0, 33535.0, 9729.0, 5136.0, 24063.0, 6145.0, 62479.0, 23295.0, 6145.0, 58895.0, 35071.0, 9729.0, 57359.0, 46335.0, 10497.0, 53263.0, 55039.0, 4609.0, 57359.0, 42495.0, 2305.0, 60943.0, 41471.0, 64768.0, 57359.0] |
HR | No | 1000 | 1000 | 1次1个数据,代表每分钟心跳次数。单位:次/分钟 | [80.0] |
MAG | No | 100 | 100 | 1次上报1组,每组4个数据,分别代表x轴、y轴、z轴磁场强度,最后一个数据无实际意义,无需关注。单位:μT | [3.9310358, 21.161278, -34.467373, 0.0] |
PPG | Yes | 10 | 100 | 三路数据(GREEN/RED/IR) 100ms上报10包数据,每包数据4个字节。 | [758457.0, 2273675.0, 2276247.0, 2278939.0, 2281102.0, 2283411.0, 2285717.0, 2288307.0, 2290863.0, 2293297.0](一路数据) |
ECG | Yes | 2 | 100 | 一路数据100ms上报50包数据。不区分左右手。单位:nV | [-5020837.0, -4742510.0, -4896082.0, -4938397.0, -4796497.0, -4886598.0, -4871642.0, -4943139.0, -5209429.0, -5294787.0, -5161278.0, -5174045.0, -5588071.0, -5323970.0, -5342938.0, -5028133.0, -5094523.0, -5240070.0, -5394008.0, -5540285.0, -5655190.0, -5589895.0, -5539920.0, -5559618.0, -5623090.0, -5501618.0, -5747845.0, -5871870.0, -5814964.0, -5885002.0, -6069946.0, -5678536.0, -5839040.0, -5903971.0, -5959417.0, -6172084.0, -6263279.0, -6029455.0, -6097669.0, -6165518.0, -6174638.0, -6284072.0, -6347544.0, -6319091.0, -6085631.0, -6143631.0, -6382198.0, -6250512.0, -6396059.0, -6424512.0] |
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿