鸿蒙开发(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.mzph.cn/web/54353.shtml

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

相关文章

初识Django

前言: 各位观众老爷们好&#xff0c;最近几个月都没怎么更新&#xff0c;主要是最近的事情太多了&#xff0c;我也在继续学习Django框架&#xff0c;之前还参加了一些比赛&#xff0c;现在我会开始持续更新Django的学习&#xff0c;这个过程会比较久&#xff0c;我会把我学习的…

MySQL--三大范式(超详解)

目录 一、前言二、三大范式2.1概念2.2第一范式&#xff08;1NF&#xff09;2.3第二范式&#xff08;2NF&#xff09;2.3第三范式&#xff08;3NF&#xff09; 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进…

嘴尚绝卤味:健康美味的双重奏

在当今快节奏的生活中&#xff0c;人们对美食的追求不再仅仅停留于味蕾的满足&#xff0c;更加注重食物的健康与营养。在这一背景下&#xff0c;"嘴尚绝卤味"以其独特的健康理念与精湛的制作工艺&#xff0c;成为了市场上备受瞩目的卤味品牌。本文将从"嘴尚绝卤…

Kotlin基本知识

Kotlin是一种现代的静态类型编程语言&#xff0c;由JetBrains公司在2010年推出&#xff0c;并被Google在2019年宣布为Android开发的首选语言。 超过 50% 的专业 Android 开发者使用 Kotlin 作为主要语言&#xff0c;而只有 30% 使用 Java 作为主要语言。 70% 以 Kotlin 为主要语…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑光伏不确定性的配电网谐波监测优化配置方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Azure DevOps Server:不能指派新增的用户

Contents 1. 概述2. 解决方案 1. 概述 近期和微软Azure DevOps项目组解决了一个“无法指派开发人员”的问题&#xff0c;在此分享给大家。问题描述&#xff1a; 在一个数据量比较大的Azure DevOps Server的部署环境中&#xff0c;用户发现将新用户的AD域账户添加到Azure DevOps…

《15分钟轻松学 Python》教程目录

为什么要写这个教程呢&#xff0c;主要是因为即使是AI技术突起的时代&#xff0c;想要用好AI做开发&#xff0c;那肯定离不开Python&#xff0c;就算最轻量级的智能体都有代码块要写&#xff0c;所以不一定要掌握完完整整的Python&#xff0c;只要掌握基础就能应对大部分场景。…

数据看板如何提升决策效率?

数据看板作为一种直观、高效的数据可视化工具&#xff0c;在这一过程中发挥着至关重要的作用。以一家中型制造企业为例&#xff0c;每天面临着生产计划的安排、原材料的采购、产品质量的把控以及市场销售的策略制定等诸多业务场景。在生产线上&#xff0c;需要确保设备的高效运…

【隐私计算篇】多方安全计算之函数秘密共享(FSS)

1. 函数秘密共享(FSS)定义 秘密共享是一种将一个值拆分为多个份额的方法&#xff0c;形式有多种&#xff0c;可以参考《安全多方计算(MPC)矩阵乘法算子的原理分析》。这里主要提及加法秘密共享&#xff0c;使得&#xff1a;这些份额可以重新组合以还原出秘密值&#xff1b;任…

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单&#xff1a;Web前端开发精进秘籍》张鑫旭&#xff0c;一些摘要&#xff1a; HTML&#xff0c;这门语言的知识体系非常庞杂&#xff0c;涉…

Python数据结构与算法问题详解

Python数据结构与算法问题详解 Python 作为一种高级编程语言&#xff0c;凭借其简洁的语法和强大的内置库&#xff0c;成为了数据结构与算法学习的绝佳工具。本文将深入解析几种常见的数据结构&#xff0c;并结合具体的算法&#xff0c;展示如何在实际问题中高效解决问题。通过…

《PMI-PBA认证与商业分析实战精析》第7章 解决方案评价

第7章 解决方案评价 本章主要内容&#xff1a; 评价的建议思维 解决方案的评价计划 确定评价什么 何时以及如何验证解决方案的结果 评价验收标准和解决缺陷 促进通过/不通过的决策 获得解决方案的签字确认 评价解决方案的长期绩效 解决方案替换/淘汰 本章涵盖的考试…

ASP.NET Core 创建使用异步队列

示例图 在 ASP.NET Core 应用程序中&#xff0c;执行耗时任务而不阻塞线程的一种有效方法是使用异步队列。在本文中&#xff0c;我们将探讨如何使用 .NET Core 和 C# 创建队列结构以及如何使用此队列异步执行操作。 步骤 1&#xff1a;创建 EmailMessage 类 首先&#xff0c…

1、Spring Boot 3.x 集成 Eureka Server/Client

一、前言 基于 Spring Boot 3.x 版本开发&#xff0c;因为 Spring Boot 3.x 暂时没有正式发布&#xff0c;所以很少有 Spring Boot 3.x 开发的项目&#xff0c;自己也很想了踩踩坑&#xff0c;看看 Spring Boot 3.x 与 2.x 有什么区别。自己与记录一下在 Spring Boot 3.x 过程…

Linux下的IO模型

阻塞与非阻塞IO&#xff08;Input/Output&#xff09; 阻塞与非阻塞IO&#xff08;Input/Output&#xff09;是计算机操作系统中两种不同的文件或网络通信方式。它们的主要区别在于程序在等待IO操作完成时的行为。 阻塞IO&#xff08;Blocking IO&#xff09; 在阻塞IO模式下…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…

调用智谱AI,面试小助手Flask简单示例

文章目录 1.接入AI获取API密钥Python代码 2.小助手的实现流程3.Flask应用示例Python文件.pyindex.html运行Flask应用地址栏输入 http://localhost:5000/ 1.接入AI 获取API密钥 在智谱AI的官方网站上注册&#xff0c;右上角点击API密钥&#xff0c;新建并复制一个 API Key&…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中&#xff0c;是一定会遇到表关联查询的。当两张大表关联时&#xff0c;时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合&#xff1a;SC_DATA&#xff08;学生基本信息集合&…