当前位置: 首页 > article >正文

鸿蒙开发(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


http://www.kler.cn/news/329155.html

相关文章:

  • 《算法岗面试宝典》重磅发布!
  • Java之方法的使用
  • 《OpenCV》—— 指纹验证
  • DAY18||530.二叉搜索树的最小绝对值差 |501.二叉搜索树中的众数| 236.二叉树的最近公共祖先
  • 车辆重识别(2021ICML改进的去噪扩散概率模型)论文阅读2024/9/29
  • CS 工作笔记:SmartEdit 里创建的是 CMS Component
  • 【Spring】深入理解控制反转-IOC
  • Linux网络操作命令与函数全面总结
  • 机器视觉工程师一直做调试,维护岗位,想转岗软件方面C#从零开始,快则三年不到,慢则一辈子不会
  • YOLO11改进 | 检测头 | 小目标遮挡物性能提升的检测头Detect_MultiSEAM【完整代码】
  • 好玩的水表电表
  • we3.0里的钱包是什么?
  • Linux——pod的控制器
  • AR 眼镜之-蓝牙电话-来电铃声与系统音效
  • PO2GO、PO2Vec论文阅读与模型复现报告
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】
  • 【环保背景高管1009】2022顶刊论文数据,环保背景高管对投资的影响探究
  • 初识算法 · 双指针(1)
  • LeetCode 面试经典150题 69.x的平方根
  • html嵌入百度地图
  • 酒店智能门锁SDK接口pro[V10] 门锁校验C#-SAAS本地化-未来之窗行业应用跨平台架构
  • 如何解决 Photoshop 中的“暂存盘已满”错误
  • 用于高频交易预测的最优输出LSTM
  • 【Nacos 架构 原理】服务发现模块之Nacos注册中心服务数据模型
  • Python 并发新境界:探索 `multiprocessing` 模块的无限可能
  • 828华为云征文|部署敏捷项目管理系统工具 ZenTao
  • Spring Boot 基础入门指南
  • c++11~c++20 内联命名空间
  • Golang学习路线
  • 如何设计具体项目的数据库管理