自学记录:鸿蒙5使用ArkTS和ArkUI实现Live View功能

这次,我决定挑战一个全新的模块——Live View Kit,它提供了实况窗的创建、更新和管理功能。作为API 13的全新特性,我想用它开发一个智能餐厅的点餐和取餐提醒功能。

这篇文章不仅是我的学习记录,也是我探索HarmonyOS Next API 13的实践总结,伴随着思考与代码分享。


学习起点:什么是Live View Kit?

Live View Kit是HarmonyOS中一个用于展示实时动态信息的模块,它支持各种应用场景,比如物流跟踪、航班信息更新、取餐提醒等。它通过实况窗(Live View)的形式展示信息,分为卡片形态和胶囊形态。

根据官方文档,Live View Kit具备以下核心能力:

  1. 创建实况窗(如取餐通知)。
  2. 更新实况窗内容(如实时更新物流状态)。
  3. 结束实况窗。
  4. 查询实况窗状态。

这一切听起来很棒,但作为开发者,我知道技术文档和实际开发之间,总会有些需要摸索的部分。


搭建开发环境

工具准备

如果你是真的从零开始,那么你需要先准备下面的内容:

  • 安装DevEco Studio(最新版支持HarmonyOS API 13)。
  • 阅读官方的ArkTS基础教程。

不过你不会ArkTS,那么我建议你先学一下,因为这个并不难,我也可以简单的介绍一下。ArkTS(Ark TypeScript)是华为生态的全新语言,其语法和TypeScript非常相似,同时支持声明式编程。ArkUI则是基于ArkTS的UI框架,采用组件化和声明式开发。


实战开始:开发一个取餐提醒应用

功能设计

我的目标是开发一个智能餐厅的取餐提醒功能,包含以下特点:

  1. 创建实况窗:当餐品准备好时,显示取餐码和窗口号。
  2. 更新实况窗:实时更新剩余等待时间。
  3. 结束实况窗:用户完成取餐后关闭提醒。

项目初始化

在DevEco Studio中创建Stage模型应用后,我引入了以下模块:

import { liveViewManager } from '@kit.LiveViewKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';

1. 检查实况窗功能是否开启

首先,我需要确保设备支持并启用了Live View功能。以下是代码实现:

async function checkLiveViewEnabled() {try {const isEnabled = await liveViewManager.isLiveViewEnabled();hilog.info(0x0000, 'LiveViewCheck', `LiveView is enabled: ${isEnabled}`);if (!isEnabled) {console.error('Live View is not enabled on this device.');}} catch (err) {let error: BusinessError = err as BusinessError;hilog.error(0x0000, 'LiveViewCheck', `Error checking LiveView: ${error.message}`);}
}checkLiveViewEnabled();

我的思考:这一步虽然简单,但它是项目启动的关键。设备支持和功能启用是Live View能否正常运行的基础。


2. 创建实况窗

接下来,我实现了创建实况窗的功能。当餐品准备好时,实况窗会显示取餐码和窗口号。

async function startLiveView() {try {const liveView = {id: 101,event: 'PICK_UP',sequence: 1,isMute: false,liveViewData: {primary: {title: '餐品已备好',content: [{ text: '请前往' },{ text: '一号窗口', textColor: '#FF0000' }],keepTime: 3600,layoutData: {layoutType: liveViewManager.LayoutType.LAYOUT_TYPE_PICKUP,title: '取餐码',content: 'A12345',underlineColor: '#0000FF'}},capsule: {type: liveViewManager.CapsuleType.CAPSULE_TYPE_TEXT,status: 1,title: '待取餐',content: '取餐码:A12345',backgroundColor: '#308977'}}};const result = await liveViewManager.startLiveView(liveView);hilog.info(0x0000, 'LiveViewStart', `LiveView started successfully: ${JSON.stringify(result)}`);} catch (err) {let error: BusinessError = err as BusinessError;hilog.error(0x0000, 'LiveViewStart', `Failed to start LiveView: ${error.message}`);}
}startLiveView();

我的思考:Live View的UI布局是通过layoutType控制的。API提供了多种布局类型,如LAYOUT_TYPE_PICKUP、LAYOUT_TYPE_PROGRESS等。在这个场景中,我选择了取餐专用的LAYOUT_TYPE_PICKUP。


3. 更新实况窗

如果用户需要实时更新取餐等待时间,可以调用以下代码:

async function updateLiveView(sequence: number, remainingTime: string) {try {const liveView = {id: 101,event: 'PICK_UP',sequence: sequence,liveViewData: {primary: {content: [{ text: `预计等待时间:${remainingTime}` }]}}};const result = await liveViewManager.updateLiveView(liveView);hilog.info(0x0000, 'LiveViewUpdate', `LiveView updated successfully: ${JSON.stringify(result)}`);} catch (err) {let error: BusinessError = err as BusinessError;hilog.error(0x0000, 'LiveViewUpdate', `Failed to update LiveView: ${error.message}`);}
}// Example usage
updateLiveView(2, '5分钟');

4. 结束实况窗

用户完成取餐后,可以调用以下代码关闭实况窗:

async function stopLiveView() {try {const liveView = {id: 101,event: 'PICK_UP'};const result = await liveViewManager.stopLiveView(liveView);hilog.info(0x0000, 'LiveViewStop', `LiveView stopped successfully: ${JSON.stringify(result)}`);} catch (err) {let error: BusinessError = err as BusinessError;hilog.error(0x0000, 'LiveViewStop', `Failed to stop LiveView: ${error.message}`);}
}stopLiveView();

项目总结

通过这次实践,我对HarmonyOS Next的ArkTS和ArkUI有了更深的理解。Live View Kit的功能为开发者提供了极大的便利,特别是在实时信息展示的场景中,具有不可替代的优势。

我的小收获

  1. 熟悉了ArkTS的Promise用法以及错误处理机制。
  2. 深刻理解了Live View的数据模型和布局设计。
  3. 学会了如何高效调试HarmonyOS应用。

下一步计划:探索Live View Kit的更多场景,比如物流跟踪和赛事比分展示,进一步挖掘其潜力。


参考资料

Live View Kit 官方文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/liveveiw-liveviewmanager-V13

学习ArkTS语言

https://developer.huawei.com/consumer/cn/arkts/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/499098.html

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

相关文章

git的全通路线介绍

一、关系 1.git是代码版本管理工具,即可将项目切换到任意版本。 2.github与gitee是基于git技术构建的远程仓库网站。github是国外建立的,资源更丰富;gitee是国内建立的,免费功能更多。 3.gitlab与github类似,只不过…

新年快乐

今天是元旦,也是2025年的第一天,是旧的一年的结束,是新的一年的开始。 回顾2024年这一年,认认真真,勤勤恳恳,做出了一些成绩。 罗列一下2024年一年的里程表: 一月份,一边上班&…

SAKO搜索帮助增强(FB02科目搜索帮助)

SAKO搜索帮助增强(FB02科目搜索帮助) 一、 FB02的科目添加搜索帮助 FB02进入后,在填科目时添加搜索帮助。 二、增强步骤 SE11查看集中搜索帮助SAKO 菜单栏转到附加搜索帮助,添加新的搜索帮助,并添加对应的参数 使用SE11…

phpstudy2018问题(技巧)总结

目录 安装介绍注意操作 问题phpstudy待续、更新中...... 安装 软件下载(新人推荐2018 版本phpstudy ) 官网下载 https://www.xp.cn/download.html 介绍 系统服务------开机自启 非服务模式------开机不自启 搭建好环境, 此时服务器与客户端同时存在 …

github提交不上去,网络超时问题解决

问题出现的原因: DNS服务器数据不同步,github的服务器发送迁移,在本地缓存的ip地址现在无效了。 解决方案: 1)点击这里,查询github.com最新的ip地址 2.0)编辑linux系统地址缓存文件&#x…

Flink operator实现自动扩缩容

官网文档位置: 1.Autoscaler | Apache Flink Kubernetes Operator 2.Configuration | Apache Flink Kubernetes Operator 1.部署K8S集群 可参照我之前的文章k8s集群搭建 2.Helm安装Flink-Operator helm repo add flink-operator-repo https://downloads.apach…

LeetCode--排序算法(堆排序、归并排序、快速排序)

排序算法 归并排序算法思路代码时间复杂度 堆排序什么是堆?如何维护堆?如何建堆?堆排序时间复杂度 快速排序算法思想代码时间复杂度 归并排序 算法思路 归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成…

加密流量TLS1.2 和TLS1.3的握手区别

加密流量TLS1.2 和TLS1.3的握手区别 TLS1.2 握手均是明文 1)Client Hello 2)Server Hello 3)Certificate TLS1.3 握手中Client Hello是明文,而Server Hello中Extensions以及后面的握手信息不可见 1)Client Hello…

5分钟掌握python中的匿名函数

lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以 用 lambda 表达式来代替。 lambda 表达式的语法格式如下: name lambda [list] : 表达式 其中&#xff…

单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上面, 一般用实现类 Injectable 在测试案例中声明…

保姆级教程Docker部署ClickHouse镜像

目录 1、安装Docker及可视化工具 2、创建挂载目录 3、获取配置文件 4、运行ClickHouse容器 5、Compose运行ClickHouse容器 6、查看ClickHouse运行状态 7、安装包部署 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考:Ubuntu上安装 Docker及可视化…

如何通过深度学习提升大分辨率图像预测准确率?

随着科技的不断进步,图像处理在各个领域的应用日益广泛,特别是在医疗影像、卫星遥感、自动驾驶、安防监控等领域中,大分辨率图像的使用已经成为了一项不可或缺的技术。然而,大分辨率图像带来了巨大的计算和存储压力,同…

Spring实现Logback日志模板设置动态参数

版权说明: 本文由博主keep丶原创,转载请保留此块内容在文首。 原文地址: https://blog.csdn.net/qq_38688267/article/details/144842327 文章目录 背景设计日志格式实现配置动态取值logback-spring.xml 背景 多个单体服务间存在少量交互&…

【无线传感网】无线传感器网络拓扑控制技术

文章目录 拓扑控制的意义影响整个网络的生存时间减小节点间通信干扰,提高网络通信效率为路由协议、时间同步提供基础影响数据融合弥补节点失效的影响 拓扑控制的设计目标能量消耗覆盖度连通性算法的分布式程度网络延迟🚩干扰和竞争对称性鲁棒性和可扩展性…

如何在没有 iCloud 的情况下将联系人从 iPhone 传输到 iPhone

概括 近期iOS 13.5的更新以及苹果公司发布的iPhone SE在众多iOS用户中引起了不小的轰动。此外,不少变化,如暴露通知 API、Face ID 增强功能以​​及其他在 COVID-19 期间与公共卫生相关的新功能,吸引了 iPhone 用户尝试新 iPhone 并更新到最…

matlab 设计滤波器

滤波器可视化工具 fvtool 与 filterAnalyzer 设计滤波器: matlab 菜单栏 APP - 滤波器设计

Keil中的gcc

文章目录 一、IDE背后的命令1.1 IDE是什么1.2 IDE的背后是命令1.3 有两套主要的编译器 二、准备工作2.1 arm-linux-gcc和gcc是类似的2.2 Code::Blocks2.2.1 设置windows环境变量2.2.2 命令行示例 三、gcc编译过程详解3.1 程序编译4步骤3.2 gcc的使用方法3.2.1 gcc使用示例3.2.2…

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …

关于easy-es对时间范围查询遇到的小bug

前言:在使用easy-es之前作为一个小白的我只有es原生查询的基础,在自己通过查看官方文档自学easy-es遇到了一个挫折,其他的还好语法和MybatisPlus差不多,正以为我觉得很快就能入手,在对时间范围的判断就给我当头一棒&am…

typora+picgo core+minio自动上传图片

1. 在服务器上安装docker版本minio 创建/docker/minio文件夹 mkdir -p /docker/minio在此文件夹创建docker-compose.yml version: "3.5" services:minio:image: quay.io/minio/minio:latestcontainer_name: minioprivileged: truerestart: alwaysports:# API接口访…