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

鸿蒙NEXT Wear Engine开发实战:手机侧应用如何调用穿戴设备能力

在鸿蒙生态中,手机与穿戴设备的无缝协作已成为用户体验的重要组成部分,而Wear Engine正是实现这种分布式体验的核心技术。

在鸿蒙生态中,手机与穿戴设备的无缝协作已成为用户体验的重要组成部分,而Wear Engine正是实现这种分布式体验的核心技术。作为一名鸿蒙开发者,掌握Wear Engine的手机侧应用开发,能够让你的应用在跨设备场景中脱颖而出。

本文将带你深入了解鸿蒙NEXT中Wear Engine的手机侧应用开发,从基础概念到实战代码,帮助你快速掌握这一关键技术。

一、Wear Engine 是什么?

HUAWEI Wear Engine面向手机和穿戴设备的应用与服务开发者,提供华为穿戴设备开放能力。开发者通过调用Wear Engine开放能力,可以实现手机上的生态应用与服务给华为穿戴设备发消息、发通知、传输数据,并获取穿戴设备状态、读取传感器数据等。

Wear Engine将手机上的生态应用和服务延展到智能穿戴设备,也将智能穿戴的设备能力开放给手机应用,实现手机与穿戴设备能力共享,给消费者提供更丰富的应用场景、更便捷的业务体验。

二、开发前的准备工作

1. 申请Wear Engine服务权限

进入华为开发者联盟的"管理中心",点击"应用服务"页签下的"Wear Engine"卡片。

注意:该权限审核时长比较久,哪怕加急也要3、5天,所以如果用到了的话需要尽早去申请,免得误了大事。

2. 项目配置

在工程项目中的module.json5中配置client_id,如果之前配置过请忽略。

json

{"module": {"metadata": [{"name": "client_id","value": "xxxxxx"}]}
}

三、核心功能实现

1. 权限申请

在使用Wear Engine服务前,需要向用户申请相应的权限授权。

typescript

import { wearEngine } from '@kit.WearEngine';
import { BusinessError } from '@kit.BasicServicesKit';// 步骤1:获取AuthClient对象
let authClient: wearEngine.AuthClient = wearEngine.getAuthClient(getContext(this));// 步骤2:基于需要用户授权的权限定义权限请求类
let request: wearEngine.AuthorizationRequest = {permissions: [wearEngine.Permission.USER_STATUS]
}// 步骤3:请求用户授权
authClient.requestAuthorization(request).then(result => {console.info(`Succeeded in requesting authorize, authorized permissions is ${result.permissions}`);
}).catch((error: BusinessError) => {console.error(`Failed to request authorize. Code is ${error.code}, message is ${error.message}`);
});

不同传感器类型需要申请不同的权限:

传感器类型申请权限
ECG、PPG、HR[HEALTH_SENSOR]人体传感器
ACC、GYRO、MAG[MOTION_SENSOR]运动传感器

2. 获取已连接的穿戴设备

在进行设备通讯前,首先需要获取已连接的穿戴设备。

typescript

// 获取DeviceClient对象
const deviceClient = wearEngine.getDeviceClient(ctx);// 获取已连接的穿戴设备
const deviceList = await this.deviceClient.getConnectedDevices();// 获取指定穿戴设备
const targetDevice = deviceList.find(device => device.category === wearEngine.DeviceCategory.WATCH);

3. 获取穿戴设备传感器数据

获取传感器数据是Wear Engine的核心能力之一,让我们看看如何实现。

typescript

// 步骤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}`);
});

订阅传感器数据

typescript

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}`);});}
});

4. 设备间通讯

设备间通讯是Wear Engine的另一个核心能力,实现手机与穿戴设备的数据交换。

配置通讯参数

在module.json5中配置穿戴设备应用的包名:

json

{"metadata": [{"name": "wearEngineRemoteAppNameList","value": "xxx.xxx.xxx"}]
}

发送和接收消息

typescript

// 获取P2p模块的客户端
const p2pClient = wearEngine.getP2pClient(ctx);// 检查远程应用是否安装
p2pClient.isRemoteAppInstalled(this.device.randomId, this.remoteBundleName).then(async (isInstalled) => {if(isInstalled) {// 拉起远程appawait p2pClient.startRemoteApp(targetDevice.randomId, '指定包名');}});// 发送消息
const textEncoder: util.TextEncoder = new util.TextEncoder();
const messageStr = JSON.stringify(messageContent);
const message: wearEngine.P2pMessage = {content: textEncoder.encodeInto(messageStr)
};
p2pClient.sendMessage(this.device.randomId, appParam, message);// 接收消息
p2pClient.registerMessageReceiver(this.device.randomId, appParam, callback);

注意:设备通讯之间,只能发二进制数据,所以需要通过textEncoder.encodeInto转成对应格式。

四、实战案例:智能手表学习伴侣

在"学海随身学"可穿戴设备端,我们利用HarmonyOS的Wear Engine Kit将核心学习功能延伸至智能手表,创造了独特的"碎片化学习"体验。

创新实现功能:

  1. 单词闪记:利用碎片时间记忆单词

  2. 题目推送:重要题目智能提醒

  3. 学习状态监测:久坐提醒+专注度分析

关键实现代码:

typescript

import { wearEngine } from '@ohos.wearEngine';
import { sensor } from '@ohos.sensor';// 1. 初始化手表引擎
let engine = wearEngine.create({appName: 'XuehaiMini',memoryLimit: 30 // MB
});// 2. 单词闪记功能
function showFlashCard(word: string) {wearEngine.showCard({type: 'education',content: word,vibration: 'SHORT',actions: [{text: '认识',callback: () => markAsKnown(word)}]});
}// 3. 学习状态监测
sensor.on(sensor.SensorType.SENSOR_TYPE_ID_HEART_RATE, (data) => {if (data.values[0] > 100) {wearEngine.showAlert({message: '您的心率过快,建议休息',duration: 5000});}
});

实测数据(HUAWEI WATCH 4):

  • 单词记忆效率提升40%

  • 题目提醒打开率达92%

  • 续航影响<8%/天

五、开发注意事项

  1. 确保设备连接:请确保穿戴设备和华为运动健康App处于连接状态。用户可进入App"设备"界面查看设备是否在线。

  2. 错误处理:常见的错误码处理:

    • 1008500004:权限未正确申请

    • 206/207:包名配置错误

  3. 传感器使用说明

    • 传感器成功打开后,会根据每个传感器的上报周期连续不断上报数据

    • 建议开发者根据时间戳进行数据对齐

    • 设备连接状态断开,会停止传感器数据上报

六、总结

鸿蒙NEXT的Wear Engine为开发者提供了强大的跨设备能力,让手机应用能够充分利用穿戴设备的特性,创造更加丰富和便捷的用户体验。

通过本文的介绍,你应该已经了解了Wear Engine手机侧应用开发的基本流程和核心功能实现。现在,是时候动手实践,将你的应用体验延伸到穿戴设备上了!

鸿蒙完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

http://www.dtcms.com/a/502995.html

相关文章:

  • github 个人静态网页搭建(一)部署
  • 【Go】C++ 转 Go 第(三)天:defer、slice(动态数组) 与 map
  • 【大模型微调】LLaMA Factory 微调 LLMs VLMs
  • 服务器管理:构建与维护高效服务器环境的指南
  • wordpress 网站生成app中山免费建站
  • 使用搭载Ubuntu的树莓派开启热点
  • 存算一体架构的先行者:RustFS在异构计算环境下的探索与实践
  • asp access网站建设源代码网站的开发流程可以分为哪三个阶段
  • SAUP论文提到的S2S Backbone Models是什么
  • 实战量化Facebook OPT模型
  • C 标准库函数 | strcmp, strlen
  • 图像处理~多尺度边缘检测算法
  • 网站集约化建设必要性wordpress 媒体库外链
  • springboot整合redis-RedisTemplate集群模式
  • Spring AOP 实战案例+避坑指南
  • 第三章 栈和队列——课后习题解练【数据结构(c语言版 第2版)】
  • Kubernetes Ingress与安全机制
  • 【企业架构】TOGAF架构标准规范-机会与解决方案
  • apache建设本地网站wordpress修改成中文字体
  • windows平台,用pgloader转换mysql到postgresql
  • Linux驱动第一期1-10-驱动基础总结
  • 我的WordPress网站梅林固件做网站
  • 分库分表:基础介绍
  • 使用css `focus-visible` 改善用户体验
  • AI人工智能-深度学习的基本原理-第二周(小白)
  • 【2070】数字对调
  • 【AI智能体】Coze 提取对标账号短视频生成视频文案实战详解
  • IOT项目——ESP系列
  • 【成长纪实】Dart 与 ArkTS 函数与类的对比学习:从 Flutter 到 HarmonyOS
  • 基于 JETSON+FPGA+GMSL+AI 车载视频采集与存储系统设计(二)系统测试