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

news2024/10/6 21:30:38

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编DEBUG程序调用

工具 系统:Windows 11 应用:DOSBox 0.74-3 下载安装教程:本人写的《DOSBox下载安装(Windows系统 DOSBox 0.74-3)》 https://blog.csdn.net/just_do_it_sq/article/details/142715182?spm1001.2014.3001.5501 相关文…

C++ 算法学习——1.3 深度优先搜索

深度优先搜索:简单讲就是搜到某条路尽头,再掉头回溯搜其他的路。此中重点是尽头的判断,和对走过的路进行标记。 一般采用递归的写法,模板大致如下: DFS(node,visited):if node is in visited:returnadd node to visi…

通用mybatis-plus查询封装(QueryGenerator)

结果如下图所示 java类代码分别如下 1 package com.hdx.contractor.util.mybatis;import com.hdx.contractor.common.user.SecurityUser; import com.hdx.contractor.common.user.UserDetail; import com.hdx.contractor.util.query.oConvertUtils; import lombok.extern.slf…

OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(一)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 轻量带屏解决方案之恒玄芯片移植案例 本文章基于恒玄科技BES2600W…

【AI知识点】交叉验证(Cross-Validation)

交叉验证(Cross-Validation) 是机器学习中常用的一种模型评估方法,用于评估模型的性能和泛化能力。它通过在不同的训练集和验证集上多次训练和测试模型,从而有效地评估模型在未见数据上的表现,帮助防止模型的过拟合和欠…

【RTD MCAL 篇2】 K312 UART DMA

【RTD MCAL 篇2】 K312 UART DMA 一,文档简介二, 功能实现2.1 K312 MINIEVB硬件配置2.2 EB 配置2.2.1 Mcl module2.2.2 Mcu module2.2.3 Platform module2.2.4 Port module2.2.5 Uart module2.2.6 Rm module 2.3 main code 三,测试结果 一&am…

Clio——麻省理工学院增强机器人场景理解算法

概述 机器人感知长期以来一直受到现实世界环境复杂性的挑战,通常需要固定设置和预定义对象。麻省理工学院的工程师 已经开发了Clio这项突破性的系统可以让机器人直观地理解并优先考虑周围环境中的相关元素,从而提高其高效执行任务的能力。 了解对更智…

【Python】Marmir 使用指南:Python 驱动的电子表格生成器

Marmir 是一个由 Python 驱动的电子表格生成工具,专门用于将 Python 数据结构(如字典、列表等)转换为电子表格文件(如 Excel)。Marmir 的设计目标是提供比传统电子表格库(如 xlwt)更强大和灵活的…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;各种解密方式试试; MD5免费在线解密破解_MD5在…

文件后缀名不见了怎么办?

有一天,突然有需要更改文件的后缀名,可奇怪的是文件只有名称,后缀不见了,这该如何修改呢? 第一步:打开此电脑,最上面一栏选择“查看” 第二步:将“文件扩展名”勾选上 第三步&…

会议时如何实现扫码签到?

如何实现扫码签到? 在现代活动管理中,签到环节是不可或缺的一部分。它不仅关系到活动的顺利进行,还涉及到参与者的体验。传统的签到方式往往耗时且效率不高,而随着技术的发展,扫码签到成为了一种高效且便捷的解决方案。…

用小学生可以理解的语言讲一下什么是大模型

好的,用小学生的语言来说,大模型就像是一个超级聪明的机器人老师,它懂得很多东西,可以帮助我们做很多事情。 1. **懂得很多**:大模型知道很多知识,就像一个巨大的图书馆,里面有很多书&#xff0…

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括但不限于:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三。 后面会经常写一下博客&…

归并排序:递归、非递归实现、文件排序(归并排序实现)

目录 归并排序递归实现 1.归并排序基本思想 2.归并排序单趟思路 3.代码思路步骤 3.1.归并排序实现思路步骤 3.2.总结 3.2.1.数组归并与链表归并的差异 (1)数组归并 (2)链表归并 (3)总结 3.2.2.归并排序的递归实现总结 4.归并排序递归实现代码 5.归并排序递归递归展…

用AI做电子萌宠,快速涨粉变现

今天给大家分享一个很热门的小副业—AI宠物视频 项目介绍 前一阵刷到一个萌宠账号,爆款率可真高,涨粉可真快呀。 28篇笔记涨粉3.2万,点赞更是达到了十几万。其中有6篇点赞上万。 至于究竟是不是AI其实没那么重要,重要的是&…

华为OD机试 - Excel单元格数值统计(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

安可数据库产品目录

‌国家安可数据库产品目录包括以下主要产品‌: ‌华为GaussDB、openguass: 由华为云计算技术有限公司提供。‌金仓数据库管理系统:由中电科金仓(北京)科技股份有限公司提供。‌神通数据库管理系统:由天津神…

上学迟到问题

刚看到这题时&#xff0c;我突然就有了思路。说起来挺可笑的当我写完这题后&#xff0c;并成功AC时&#xff0c;看着我那冗长的代码我陷入了深思&#xff0c;难道真的有必要写这么一长串吗? 这是我的代码 #include<stdio.h> int main(){int s,v,t;scanf("%d %d&q…

ROW_NUMBER

How to rewrite a query which uses the ROW_NUMBER() window function in versions 5.7 or earlier before window functions were supported e.g., SELECT ROW_NUMBER() OVER (PARTITION BY fieldA) AS rownum, myTable.* FROM myTable; index 用不上的 Solution Assuming…

Linux高阶——0928—Github数据上传markdown语言

1、Github三要素 仓库、提交、分支 提交 绿色&#xff1a;新加 红色&#xff1a;删除 主分支master或main 项目的存储单位——仓库 实际代码的存储单位——分支 分支的协同开发 2、本地数据上传到云端的过程 3、markdown