鸿蒙开发(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]方法获取到。一次只能查询一个状态。
-
参见[已连接穿戴设备查询]章节,获取已连接设备列表。
-
参见[目标设备选择]章节,从已连接设备列表中选定需要通信的设备。
-
调用[wearEngine]中的[getMonitorClient]方法,获取[MonitorClient]对象。
-
调用[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}.`);
})
订阅设备状态
-
参见[已连接穿戴设备查询]章节,获取已连接的设备列表。
-
参见[目标设备选择]章节,从已连接设备列表中选定需要通信的设备。
-
调用[wearEngine]中的[getMonitorClient]方法,获取[MonitorClient]对象。
-
定义订阅任务的回调对象[callback]。
-
调用[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}.`);
})
- 调用[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 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
相关文章:

鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
注意 该接口的调用需要在开发者联盟申请设备基础信息权限与穿戴用户状态权限,穿戴用户状态权限还需获得用户授权。 实时查询穿戴设备可用空间、电量状态。订阅穿戴设备连接状态、低电量告警、用户心率告警。查询和订阅穿戴设备充电状态、佩戴状态、设备模式。 使…...

vite中sass警告JS API过期
1.问题 在Vite创建项目中引入Sass弹出The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 - vite中sass警告JS API过期 The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0警告提示表明你当前正在使用的 Dart Sass 版本中&#…...

睢宁自闭症寄宿学校:培养特殊孩子的未来
在自闭症儿童的教育与康复领域,每一所学校的努力都是对孩子们未来无限可能的一次深刻诠释。从江苏睢宁到广东广州,自闭症寄宿学校正以不同的方式,为这些特殊的孩子铺设一条通往未来的希望之路。其中,广州的星贝育园自闭症儿童寄宿…...

【Canvas与徽章】金圈蓝底国庆75周年徽章
【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金边黑盾75周年</title><style type"text/css"&g…...

Java Servlet 详解
Java Servlet 是 Java 企业级应用 中的一个核心组件,特别是在 Web 应用开发中,它为服务器端处理请求提供了基础。每次用户发出请求时,Servlet 都会动态生成响应,这在构建复杂、交互式的 Web 应用时尤为重要。 什么是 Servlet&am…...

yolov8/9/10模型在安全帽、安全衣检测中的应用【代码+数据集+python环境+GUI系统】
yolov8910模型安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在安全帽、安全衣检测中的应用【代码数据集python环境GUI系统】 背景意义 安全帽和安全衣在工业生产、建筑施工等高风险作业环境中是保护工人免受意外伤害的重要装备。然而࿰…...

算力共享系统中数据平面和控制平面
目录 算力共享系统中数据平面和控制平面 数据平面 控制平面 算力共享系统举例 控制流程和业务流程,在算力共享系统中举例说明 控制流程 业务流程 算力共享系统中数据平面和控制平面 在算力共享系统中,数据平面和控制平面是两个关键组成部分,它们各自承担着不同的角色…...

C++语言学习(4): identifier 的概念
1. 什么是 identifier identifier 中文意思是标识符,在 cppreference 中明确提到,identifier 是任意长度的数字、下划线、大写字母、小写字母、unicode 字符 的序列: An identifier is an arbitrarily long sequence of digits, underscores…...
浅谈计算机神经网络基础与应用
1. 绪论 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。作为AI技术的核心组成部分,神经网络在推动这一领域的发展上扮演着至关重要的角色。本报告旨在探讨AI中的不同类型神经网络及其在实际应用中的表现和影响。我们将从神经网络的基本概念入手,逐步…...

【SpringBoot详细教程】-08-MybatisPlus详细教程以及SpringBoot整合Mybatis-plus【持续更新】
目录 🌲 MyBatis Plus 简介 🌾入门案例 🌾 MP 简介 🌲 MP 的CRUD 🌾 新增 🌾 删除 🌾 修改在进行 🌾 根据ID查询 🌾 查询所有 🌲 分页功能 🌾 设置分页参数 🌾 设置分页拦截器 🌲 优化启动 🌾 取消mbatisPlusBanner 🌾 取消Sprin…...
[20241002] OpenAI融资文件曝光,ChatGPT年收入涨4倍,月费5年内翻倍
智东西9月29日消息,据《纽约时报》9月27日报道,OpenAI的内部文件显示,该公司在8月份的月收入达到3亿美元,自2023年初以来增长了1700%,预计今年年度销售额将达到37亿美元,其中ChatGPT将带来27亿美元的收入。…...

工业缺陷检测——Windows 10本地部署AnomalyGPT工业缺陷检测大模型
0. 引言 在缺陷检测中,由于真实世界样本中的缺陷数据极为稀少,有时在几千甚至几万个样品中才会出现一个缺陷数据。因此,以往的模型只需在正常样本上进行训练,学习正常样品的数据分布。在测试时,需要手动指定阈值来区分…...
单元测试进阶-Mock使用和插桩
目录 一、基本概念 1、Mock 2、插桩(Sutbbing) 二、参考文章 一、基本概念 1、Mock Mock的作用就是不直接new对象,而是使用Mock方法或者注解Mock一个对象。 这个对象他不是new创建的对象,Mock对该对象的一些成员变量和方法…...
适用conda安装虚拟的python3环境
由于jupyter notebook 7以上的版本与jupyter_contrib_nbextensions存在冲突,导致以前使用顺手的插件无法使用了,就考虑建立一个虚拟环境,在里面使用jupyter notebook 6,以便和jupyter_contrib_nbextensions兼容。 conda简介和优势 Conda 是一个包管理器和环境管理器,它不…...

【C++】“list”的介绍和常用接口的模拟实现
【C】“list”的介绍和常用接口的模拟实现 一. list的介绍1. list常见的重要接口2. list的迭代器失效 二. list常用接口的模拟实现(含注释)三. list与vector的对比 一. list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器…...

第九篇——数列和级数(二):传销骗局的数学原理
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 文章不长,但是道理深刻;相邻两个数的差值…...
docker如何查看容器的ip
要查看Docker容器的IP地址,可以使用以下几种方法: 使用docker inspect命令: docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} <容器ID或名称> 使用docker ps和docker inspect组合: 首先查看正…...

Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
文章目录 一、问题报错二、ONLY_FULL_GROUP_BY模式2.1、什么是ONLY_FULL_GROUP_BY?2.2、为什么要使用ONLY_FULL_GROUP_BY?2.3、查看sql_mode 三、解决方法3.1、关闭only_full_group_by模式3.1.1、方法一:关闭当前会话中的only_full_group_by3…...
设计模式(2)工厂模式
让一个工厂类去生产出对象 (new )来。 我们想要一个 形状,我们用工厂去生产出,圆形,方形。 package com.example.factory2;public interface Shape {void draw(); }public class Square implements Shape {Overridep…...

二分查找算法专题(1)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 目录 二分查找算法的介绍 704. 二分查找 34. 在排序数组中查找元素的第一个和 最后一个位置 35. 搜索插入位置 69. x的平…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...