鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发

注意

该接口的调用需要在开发者联盟申请设备基础信息权限与穿戴用户状态权限,穿戴用户状态权限还需获得用户授权。

  • 实时查询穿戴设备可用空间、电量状态。
  • 订阅穿戴设备连接状态、低电量告警、用户心率告警。
  • 查询和订阅穿戴设备充电状态、佩戴状态、设备模式。

使用该接口前,需要确保应用已申请相应权限同时向手机侧用户申请获取对应权限的授权,否则接口将调用失败。

穿戴设备状态与运动健康状态申请权限查询结果订阅事件的触发条件订阅结果
连接状态设备基础信息N/A- 2:手机连接设备成功
  • 3:手机与设备断开(断开蓝牙或拉远距离) | - 2:连接成功
  • 3:连接断开
  • 4:连接失败
  • 5:设备被删除 |
    | 可用空间 | 可用存储空间,单位:KB(例如:20480) | N/A | N/A | |
    | 电量状态 | 电量值(例如:97) | 设备电量减少1% (例如:由98%降到97%),且设备处于非充电状态 | 电量值(例如:97) | |
    | 充电状态 | - 1:设备正在充电状态
  • 2:设备为非充电状态
  • 3:设备正在充电,且为满电状态 | - 1:给设备进行充电
  • 2:设备停止充电
  • 3:设备达到充满电的状态 | - 1:充电开始
  • 2:充电结束
  • 3:充电完成 | |
    | 设备模式 | - -1:设备不支持模式切换
  • 0:设备处于智能模式
  • 1:设备处于超长续航模式 | - 0:设备从超长续航模式切到换智能模式
  • 1:设备从智能模式切换到超长续航模式 | - 0:设备处于智能模式
  • 1:设备处于超长续航模式 | |
    | 佩戴状态 | 穿戴用户状态[USER_STATUS](仅限企业开发者) | - 1:佩戴中
  • 2:未佩戴 | - 1:将穿戴设备戴在手腕上
  • 2:将穿戴设备由手腕摘下 | - 1:佩戴
  • 2:未佩戴 |
    | 心率告警 | N/A | - 1:静态心率连续10分钟高于上限值
  • 2:静态心率连续10分钟低于下限值
  • 3:运动心率过高
  • 4:运动心率过低备注:打开“运动健康App > 设备”,在应用和服务列表中,点击“心率”,设置相应的心率提醒。 | - 1:静态心率过高
  • 2:静态心率过低
  • 3:运动心率过高
  • 4:运动心率过低 | |

说明

  • 穿戴设备侧无对应的应用,手机侧应用也可以使用该能力获取穿戴设备状态。
  • 在查询或订阅穿戴设备电量、充电、佩戴、心率告警状态时,请确保穿戴设备和华为运动健康App处于连接状态。用户可进入App“设备”界面查看设备是否在线。开发者可调用[getConnectedDevices]或根据返回错误码了解设备是否已连接手机,如果设备未连接则提醒用户重新连接设备。
  • 查询和订阅佩戴状态、心率告警时,需要申请穿戴用户状态[USER_STATUS]权限。

查询设备状态

穿戴设备的状态可以调用[MonitorClient]对象中的[queryStatus]方法获取到。一次只能查询一个状态。

  1. 参见[已连接穿戴设备查询]章节,获取已连接设备列表。

  2. 参见[目标设备选择]章节,从已连接设备列表中选定需要通信的设备。

  3. 调用[wearEngine]中的[getMonitorClient]方法,获取[MonitorClient]对象。

  4. 调用[queryStatus]方法,查询指定指标状态。

    • 通过[MonitorItem]对象,查询指定指标状态。目前支持查询的状态如下:

      • “电量状态”字段:POWER_STATUS。
      • “充电状态”字段:CHARGE_STATUS。
      • “佩戴状态”字段:WEAR_STATUS。
      • “设备模式”字段:POWER_MODE。
      • “可用内存”字段:AVAILABLE_STORAGE_SPACE
    • 通过[MonitorData]对象,返回指定指标状态的查询结果。

// 步骤3 获取MonitorClient对象
let monitorClient: wearEngine.MonitorClient = wearEngine.getMonitorClient(getContext(this));

// 步骤4 查询指定指标状态(以佩戴状态为例)
monitorClient.queryStatus(targetDevice.randomId, wearEngine.MonitorItem.WEAR_STATUS).then((result: wearEngine.MonitorData) => {
  // 获取到所查状态的状态值,处理对应业务逻辑
  console.info(`Succeeded in querying wear status, result is ${result.code}.`);
}).catch((error: BusinessError) => {
  // 处理调用失败时捕获到的异常
  console.error(`Failed to query wear status. Code is ${error.code}, message is ${error.message}.`);
})

订阅设备状态

  1. 参见[已连接穿戴设备查询]章节,获取已连接的设备列表。

  2. 参见[目标设备选择]章节,从已连接设备列表中选定需要通信的设备。

  3. 调用[wearEngine]中的[getMonitorClient]方法,获取[MonitorClient]对象。

  4. 定义订阅任务的回调对象[callback]。

  5. 调用[subscribeEvent]方法,订阅指定指标状态变化的订阅。

    • 通过[MonitorEvent]对象,订阅穿戴设备与运动健康状态。目前支持的订阅状态如下:

      • “设备连接状态”字段: [EVENT_CONNECTION_STATUS_CHANGED]。
      • “电量降低状态”字段:[EVENT_BATTERY_LEVEL_DROPPED]。
      • “充电状态”字段: [EVENT_CHARGE_STATUS_CHANGED]。
      • “佩戴状态”字段:[EVENT_WEAR_STATUS_CHANGED]。
      • “心率告警”字段:[EVENT_HEART_RATE_ALARM]。
      • “设备模式”字段:[EVENT_POWER_MODE_CHANGED]。
    • 通过[Callback] <[MonitorEventData] >对象,返回设备状态的订阅结果。

// 步骤3 获取MonitorClient对象
let monitorClient: wearEngine.MonitorClient = wearEngine.getMonitorClient(getContext(this));

// 步骤4 定义回调函数
let callback = (monitorEventData: wearEngine.MonitorEventData) => {
  // 处理监听到状态变化后的业务逻辑
  console.info(`Succeeded in listening change of ${monitorEventData.event}, the new status is ${monitorEventData.data}.`)
}

// 步骤5 调用订阅方法
monitorClient.subscribeEvent(targetDevice.randomId, wearEngine.MonitorEvent.EVENT_WEAR_STATUS_CHANGED, callback).then(() => {
  console.info(`Succeeded in subscribing wear status.`);
}).catch((error: BusinessError) => {
  console.error(`Failed to subscribe wear status. Code is ${error.code}, message is ${error.message}.`);
})
  1. 调用[unsubscribeEvent] 方法,解除穿戴设备状态变化的订阅。(需要传入订阅时使用的回调函数对象)
// 步骤6 取消订阅,取消订阅时需要传入与订阅时相同的回调函数对象才可正常取消订阅
monitorClient.unsubscribeEvent(targetDevice.randomId, wearEngine.MonitorEvent.EVENT_WEAR_STATUS_CHANGED, callback).then(() => {
  console.info(`Succeeded in unsubscribing wear status`);
}).catch((error: BusinessError) => {
  console.error(`Failed to unsubscribe wear status. Code is ${error.code}, message is ${error.message}.`);
})

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于大数据技术的颈椎病预防交流与数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

【计算机网络】详解UDP协议格式特点缓冲区

一、UDP 协议端格式 16 位 UDP 长度, 表示整个数据报(UDP 首部UDP 数据)的最大长度&#xff1b;如果16位UDP检验和出错&#xff0c;报文会被直接丢弃。 1.1、检验和出错的几种常见情况 数据传输过程中的比特翻转&#xff1a;在数据传输过程中&#xff0c;由于物理介质或网络设…

python-FILIP/字符串p形编码/数字三角形

一&#xff1a;FILIP 题目描述 给你两个十进制正整数 a,b​&#xff0c;输出将这两个数翻转后的较大数。 「翻转」在本题中的定义详见「说明 / 提示」部分。输入 第一行&#xff0c;两个十进制正整数 a,b。输出 第一行&#xff0c;a 和 b 翻转后的较大数。样例输入1 734 893 样…

鸿蒙harmonyos next flutter通信之BasicMessageChannel获取app版本号

本文将通过BasicMessageChannel获取app版本号&#xff0c;以此来演练BasicMessageChannel用法。 建立channel flutter代码&#xff1a; //建立通道 BasicMessageChannel basicMessageChannel BasicMessageChannel("com.xmg.basicMessageChannel",StringCodec());…

Koa2+Vue2的简书后台管理系统

文章目录 项目实战:前(vue)后(koa)端分离1、创建简书项目2、创建数据库2.1 创建数据库2.2 连接数据库3、模型对象3.1 设计用户模块的Schema3.2 实现用户增删改查3.2.1 增加用户3.2.2 修改用户3.2.3 删除用户3.2.4 查询用户4、封装业务逻辑层5、封装CRUD6、创建Vue项目7、配…

(14)MATLAB莱斯(Rician)衰落信道仿真4

文章目录 前言一、改写莱斯分布概率密度函数的理论值二、仿真代码三、仿真结果总结 前言 本文通过将接收信号总功率设置为1&#xff0c;重写了莱斯衰落信道上接收信号幅度的理论PDF式。然后用MATLAB代码生成了在具有不同莱斯因子K的Ricean平坦衰落信道下接收到的信号样本&…

leetcode练习 路径总和II

给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

day04笔试练习

1.Fibonacci数列 题目链接&#xff1a;Fibonacci数列_牛客题霸_牛客网 题目思路&#xff1a; 定义 a b c 三个变量 使 c 一直加到比 n 大的最近的斐波那契数 此时比较 c 和 b 哪个数离得最近就好 public static void main(String[] args) {Scanner sc new Scanner(System.in…

基于facefusion的换脸

FaceFusion是一个引人注目的开源项目&#xff0c;它专注于利用深度学习技术实现视频或图片中的面部替换。作为下一代换脸器和增强器&#xff0c;FaceFusion在人脸识别和合成技术方面取得了革命性的突破&#xff0c;为用户提供了前所未有的视觉体验。 安装 安装基础软件 安装…

深入探究:在双链表的前面进行插入操作的顺序

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;惟有主动付出&#xff0c;才有丰富的果…

构建高效服装销售平台:Spring Boot与“衣依”案例

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

hystrix微服务部署

目录 一.启动nacos和redis 1.查看是否有nacos和redis 二.开始项目 1.hystrix1工程&#xff08;修改一下工程的注册名字&#xff09; 2.运行登录nacos网站查看运行效果&#xff08;默认密码nacos,nacos&#xff09; 3.开启第二个项目 hystrix2工程 4.关闭第二个项目 hyst…

UE4 材质学习笔记02(数据类型/扭曲着色器)

一.什么是数据类型 首先为啥理解数据类型是很重要的。一些节点的接口插槽只接受特定类型的数据&#xff0c;如果连接了不匹配的数据就会出现错误&#xff0c;有些接口可以接受任何数据类型&#xff0c;但是实际上只会使用到其中的一些。并且有时可以将多个数据流合并成一个来编…

选择排序:直接选择排序、堆排序

目录 直接选择排序 1.选择排序的基本思想 2.直接选择排序的基本思想 3.直接插入排序的代码思路步骤 4.直接选择排序代码 5.直接选择排序的特性总结 堆排序 一、排升序&#xff0c;建大堆 1.利用向上调整函数建大堆 1.1.建立大堆的思路 1.2.以下是具体步骤&#xff1a…

【人人保-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

C++系列-多态

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 多态 多态就是不同类型的对象&#xff0c;去做同一个行为&#xff0c;但是产生的结果是不同的。 比如说&#xff1a; 都是动物叫声&#xff0c;猫是喵喵&#xff0c;狗是汪汪&am…

Flink集群部署

本次部署1.17版本 需要修改的配置文件地方为 Job为指挥中心&#xff0c;只能有一台主机&#xff0c;集群中所有的配置文件都这样配置 Rest为客户端UI显示使用&#xff0c;集群中所有的配置文件都这样配置 Task是每个节点工作使用的&#xff0c;每个节点的Task各不相同 conf配…

【mmengine】配置器(config)(进阶)继承与导出,命令行修改配置

一、配置文件的继承 1.1 继承机制概述 新建optimizer_cfg.py: optimizer dict(typeSGD, lr0.02, momentum0.9, weight_decay0.0001)新建runtime_cfg.py: device "cuda" gpu_ids [0, 1] batch_size 64 epochs 100 num_workers 8新建resnet50.py: _base_ […

数据结构-3.9.栈在递归中的应用

一.函数被调用背后的过程&#xff1a;最后被调用的函数最先结束也符合栈的后进先出 1.main函数为主函数即程序入口&#xff0c;运行时主函数先入栈&#xff0c;然后存入主函数里的数据&#xff1b; 2.func1函数加载在栈中时他后面的代码的地址#1(调用返回地址&#xff0c;不是…

OpenAI全新多模态内容审核模型上线:基于 GPT-4o,可检测文本和图像

在数字时代&#xff0c;内容安全问题愈发受到重视。9月26日&#xff0c;OpenAI 正式推出了一款全新的多模态内容审核模型&#xff0c;名为 “omni-moderation-latest”。 该模型基于最新的 GPT-4o 技术&#xff0c;能够准确地识别检测有害文本图像。这一更新将为开发者提供强大…