自学内容网 自学内容网

鸿蒙开发(NEXT/API 12)【穿戴设备传感器获取】手机侧应用开发

手机侧应用可以通过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}`);
})

订阅指定传感器数据上报

  1. 核对传感器列表中是否存在目标传感器。

  2. 订阅或取消订阅传感器数据上报。

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)数据格式数据样例
ACCNo101001次上报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,需要开发者自行进行转换。
GYRONo101001次上报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]
HRNo100010001次1个数据,代表每分钟心跳次数。单位:次/分钟[80.0]
MAGNo1001001次上报1组,每组4个数据,分别代表x轴、y轴、z轴磁场强度,最后一个数据无实际意义,无需关注。单位:μT[3.9310358, 21.161278, -34.467373, 0.0]
PPGYes10100三路数据(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](一路数据)
ECGYes2100一路数据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 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1


原文地址:https://blog.csdn.net/m0_70748845/article/details/142730782

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!