● 检测状态示意图包括页面背景图,检测状态图,检测结果说明文字,具体功能由 Flex 弹性布局组件实现。接口原型如下所示:
- Flex(options?: { direction?: FlexDirection, wrap?: FlexWrap, justifyContent?: FlexAlign, alignItems?: ItemAlign, alignContent?: FlexAlign })
复制代码
● 通过调用 recvMsg 接口接送金属探测器的消息,并修改首页展示状态,关键实现代码描述如下:
- aboutToAppear() {
- var intervalID = setInterval(() => {
- tcpserverapi.recvMsg().then((result) => {
- }
- }
- }
复制代码
其中 “ var intervalID = setInterval(() => ” 使用了定时器,定时调用 “recvMsg” 方法,通过 NAPI 获取金属检测结果。
- if (resultMetal.match("metal:")) {
- this.metal = resultMetal.slice(6);
- console.info('=======' + this.metal)
- if (this.metal === 'Detected') {
- this.detectionState = '发现金属';
- this.detection = $r("app.media.img_detected");
- this.isDisplay = false;
- }
- else if (this.metal === 'UnDetected' || this.metal ==='CalibrateOK') {
- this.detectionState = '检测中';
- this.detection = $r("app.media.img_detecting");
- this.isDisplay = true;
- }
- }
复制代码
当通过 NAPI 方式获取到检测信息为 “ metal:Detected ” 时,设置 detectionState 为发现金属状态,屏幕显示检测到金属页面;当通过 NAPI 方式获取到的检测信息为 “ metal:UnDetected ” 时,此时并未检测到任何金属信息,设置 detectionState 为检测中状态,屏幕显示检测中状态页面。
语音播报检测状态
检测到金属后,RK3568 会播报已探测到金属的语音信息,达到通知用户的目的,通过 OpenHarmony 媒体子系统的音频播放功能实现。
OpenHarmony 媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。媒体子系统包含了音频播放、视频播放、音频录制和视频录制等常用功能。
音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放,同时对播放任务进行管理。本样例主要通过导入 media 模块、创建音频播放实例、实现音频播放接口和实现暂停播放接口等流程实现。
● 导入media模块
- import media from '@ohos.multimedia.media';
复制代码
● 创建音频播放实例
- // OH media对象
- private player = media.createAudioPlayer();
复制代码
● 实现音频播放接口
使用 play() 调用开始播放音频资源,需在完成音频数据加载后,即 src 属性设置完成后才能调用。
四、总结本文简述了如何使用 OpenHarmony 进行多设备的开发,演示了 NAPI、eTS UI、UI 管理状态 @state 和音频播放等技术特性的应用,通过这些多元化的功能,我们最终实现了金属探测器样例。丰富多样的 OpenHarmony 开发样例离不开广大合作伙伴和开发者的贡献,如果你也想把自己开发的样例分享出来,欢迎把样例提交到 OpenHarmony 知识体系 SIG 仓来,一起实现开发样例共建。
五、参考链接RK3568开发板上丝滑体验OpenHarmony标准系统
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/docs/rk3568_quick_start
在Windows编译OpenHarmony工程
https://gitee.com/Cruise2019/team_x/blob/master/homework/ohos_build_win/readme.md
OpenHarmony NAPI 学习文档
https://gitee.com/javen678/hello-ohos-napi/tree/master/doc#/javen678/hello-ohos-napi/blob/master/doc/1.HelloNAPI.md
OpenHarmony基于eTS扩展的声明式开发范式
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md
音频播放开发指导
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/audio-playback.md
从零开发金属探测器应用
https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/metal_detection/quick_develop.md
GEEKROS官网
https://www.geekros.com/