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

HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐

背景:

前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考

先上本期效果图 ,里面图片自行替换

在这里插入图片描述

效果图1完整代码案例如下:

  • Index
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { TypeCommonItem } from './TypeCommonItem';@Entry
@ComponentV2
struct Index {build() {Column() {Text($r('app.string.EntryAbility_label')).fontSize(20)List() {ForEach(['喜马拉雅:有声书大全电台','荔枝 FM:音乐故事电台','蜻蜓 FM:新闻资讯早班车电台','企鹅 FM:情感治愈谈心电台','网易云音乐电台:小众音乐分享站','懒人听书:国学经典诵读电台'], (item: string) => {ListItem() {TypeCommonItem({ title: item })}})}}.alignItems(HorizontalAlign.Start).height('100%').padding(8).width('100%').margin({ top: 40 })}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();}/*** Sample code for using HUAWEI ID to log in to atomic service.* According to the Atomic Service Review Guide, when a atomic service has an account system,* the option to log in with a HUAWEI ID must be provided.* The following presets the atomic service to use the HUAWEI ID silent login function.* To enable the atomic service to log in successfully using the HUAWEI ID, please refer* to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.*/private loginWithHuaweiID() {// Create a login request and set parameterslet loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();// Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI IDloginRequest.forceLogin = false;// Execute login requestlet controller = new authentication.AuthenticationController();controller.executeRequest(loginRequest).then((data) => {let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;// Send authCode to the backend in exchange for unionID, session}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {// HUAWEI ID is not logged in, it is recommended to jump to the login guide page}});}
}
  • TypeCommonItem
@Extend(Image)
function imageExtend(width: Length, height: Length) {.width(width).height(height)
}@Preview
@ComponentV2
export struct TypeCommonItem {@Param title: string = ''build() {Column() {Row() {// CheckBoxSquare({//   select: true, onChange: (value) => {//     ToastUtil.showToast(`${value}`)//   }// })Column() {Text(this.title)RelativeContainer() {Text(this.getjieshao(this.title) + '').fontSize(13).fontColor('#222222').maxLines(3).lineHeight(18).textOverflow({ overflow: TextOverflow.Ellipsis }).alignRules({left: { anchor: '__container__', align: HorizontalAlign.Start },right: { anchor: 'stack', align: HorizontalAlign.Start }}).id('title').padding(8)Stack() {Image($r('app.media.diantaituijian')).width(48).height(48).position({ x: 30, y: 12 })Image($r('app.media.startIcon')).imageExtend(21, 19)}.alignContent(Alignment.TopEnd).width(108).height(72).backgroundColor('#F2F3F7').borderRadius(4).alignRules({right: { anchor: '__container__', align: HorizontalAlign.End }}).id('stack').offset({ x: -8, y: 8 })Row() {Text(generateRandomDate()).fontSize(11).fontColor('#505050')}.justifyContent(FlexAlign.SpaceBetween).width('100%').alignRules({left: { anchor: '__container__', align: HorizontalAlign.Start },bottom: { anchor: '__container__', align: VerticalAlign.Bottom },right: { anchor: '__container__', align: HorizontalAlign.End }}).id('row_author_avatar').offset({ x: 10, y: -10 }).padding({ right: 20 })}.width('100%').height(90).border({ width: 1, color: '#56DFB6', radius: 8 }).margin({ top: 8, bottom: 4 })Row() {Text(generateRandomDate()).fontSize(11).fontColor('#505050')Text(generateFiveCharacterRandomString()).fontSize(11).fontColor("#5090F1").margin({ left: 12, right: 12 })Image($r('app.media.startIcon')).width(16).borderRadius(8)Text(generateFiveCharacterRandomString()).fontSize(11).fontColor('#505050').margin({ left: 4, right: 4 })Image($r('app.media.startIcon')).imageExtend(44, 17)Blank()Image($r('app.media.ic_item_more')).width(16)}.width('100%').height(40)}.width('100%').layoutWeight(1)}.alignItems(VerticalAlign.Top).margin({ top: 12 })Divider()}.width('100%').padding({ left: 12, right: 12 })// .height('100%').backgroundColor(Color.White)}private getjieshao(title: string) {if (title == "喜马拉雅:有声书大全电台") {return '介绍:这是一个有声书爱好者的宝藏电台。这里汇聚了各种类型的有声书籍,涵盖古今中外的经典名著、畅销小说、历史传记、科幻奇幻等多个领域。无论是想重温《红楼梦》的细腻情感,还是跟随侦探在悬疑小说中抽丝剥茧,亦或是在科幻世界里畅想未来,这个电台都能满足你的需求。主播们用富有感染力的声音,将书中的情节生动地展现出来,让你在无法阅读书籍的时候,比如开车、做家务或者睡前,都能通过听书的方式沉浸在知识与故事的海洋中。'}if (title == "荔枝 FM:音乐故事电台") {return '介绍:在这个电台,音乐与故事完美交融。每一期节目都会围绕一首或几首歌曲展开一个温暖、感人、励志或者充满回忆的故事。也许是歌手创作歌曲背后的艰辛历程,也许是听众分享的一段与某首歌紧密相连的爱情、友情故事。当悠扬的旋律响起,搭配上深情的讲述,就像一杯热咖啡,在疲惫的生活中给你带来慰藉和感动,让你在聆听音乐的同时,也能感受到人性的美好和生活的多彩。'}if (title == "蜻蜓 FM:新闻资讯早班车电台") {return '介绍:每天清晨,这个电台就像一位可靠的信息使者,为你带来最新鲜、最全面的新闻资讯。它涵盖了国内外的政治、经济、文化、体育等各个领域的新闻事件,并且以简洁明了、重点突出的方式进行播报。主播们声音沉稳、节奏适中,让你在洗漱、吃早餐或者上班路上就能轻松掌握世界动态,开启一天充实的生活,帮助你在快节奏的社会中紧跟时代步伐,不会错过任何重要的消息。'}if (title == "企鹅 FM:情感治愈谈心电台") {return '介绍:当你在生活中遇到挫折、情绪低落或者感到迷茫的时候,这个电台就是你的心灵避风港。主播们用温柔的声音,和你分享关于爱情、亲情、友情等各种情感问题的见解和应对方法。同时,也会有听众的来信分享,让你知道自己不是孤单的,许多人都在经历着类似的情感困境。这里充满了理解、安慰和鼓励,能帮助你舒缓情绪,治愈内心的伤痛,重新找回面对生活的勇气。'}if (title == "网易云音乐电台:小众音乐分享站") {return '介绍:对于那些不满足于主流音乐,热衷于探索小众音乐宝藏的人来说,这个电台是绝佳的选择。它专注于挖掘各种风格的小众音乐,包括独立摇滚、民谣、电子实验音乐、世界音乐等。每一首推荐的歌曲都像是一颗未经雕琢的宝石,等待着听众去发现它的独特魅力。在这里,你可以拓宽自己的音乐视野,邂逅那些被遗忘在角落却极具个性的好音乐,感受小众音乐所带来的新鲜感和艺术氛围。'}if (title == "懒人听书:国学经典诵读电台") {return '介绍:这是一个弘扬中华传统文化的电台,主要内容是国学经典著作的诵读。从《论语》《孟子》等儒家经典,到《道德经》《庄子》等道家智慧,再到唐诗宋词的优美韵律,都能在这里听到。主播们用标准的普通话和恰当的节奏,将这些古老的经典娓娓道来,让你在聆听中感受国学的博大精深。对于想要学习国学知识、提升文化素养或者寻找内心宁静的人来说,这个电台是很好的选择。'}return ''}
}function generateRandomDate(): string {const minYear = 2023; // 最小年份const maxYear = 2024; // 最大年份const minMonth = 1; // 最小月份const maxMonth = 12; // 最大月份const minDay = 1; // 最小日期const maxDay = 31; // 最大日期// 生成随机年份const year = Math.floor(Math.random() * (maxYear - minYear + 1)) + minYear;// 生成随机月份const month = Math.floor(Math.random() * (maxMonth - minMonth + 1)) + minMonth;// 根据月份生成合理的日期let day = 0;if ([1, 3, 5, 7, 8, 10, 12].includes(month)) {day = Math.floor(Math.random() * (31 - minDay + 1)) + minDay;} else if ([4, 6, 9, 11].includes(month)) {day = Math.floor(Math.random() * (30 - minDay + 1)) + minDay;} else if (month === 2) {// 处理闰年if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {day = Math.floor(Math.random() * (29 - minDay + 1)) + minDay;} else {day = Math.floor(Math.random() * (28 - minDay + 1)) + minDay;}}// 返回格式化的日期字符串return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
}
function generateFiveCharacterRandomString(): string {const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let result = '';for (let i = 0; i < 5; i++) {result += characters.charAt(Math.floor(Math.random() * characters.length));}return result;
}

最近文章>>>>>>>>>>>

HarmonyOS NEXT实战:元服务与应用 APP 发布应用市场的详细步骤与流程

若本文对您稍有帮助,诚望您不吝点赞,多谢。

有兴趣的同学可以点击查看源码

  • gitee:https://gitee.com/jiaojiaoone/explore-harmony-next/tree/case%2Fwanandroid/
  • github:https://github.com/JasonYinH/ExploreHarmonyNext.git

相关文章:

HarmonyOS NEXT 实战之元服务:静态案例效果---电台推荐

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index import { authentica…...

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…...

MATLAB符号计算-符号表达式基础运算操作

1.1.2符号变量取值域的限定 默认复数域 【例1-1-2】解不等式 1.1.3创建符号表达式 对符号对象进行各种运算&#xff08;算术运算、关系运算、逻辑运算&#xff09;&#xff0c;即可创建符号表达式。 1.算术运算与转置 【例1-1-3】 f5是f4的共轭转置 f6是f4的转置 2.关系…...

服务器被攻击怎么办

当服务器遭受恶意流量攻击&#xff0c;如DDoS&#xff08;分布式拒绝服务&#xff09;或CC&#xff08;Challenge Collapsar&#xff09;攻击时&#xff0c;传统的防护措施可能不足以应对。此时&#xff0c;采用高防IP服务可以有效缓解攻击压力&#xff0c;确保业务连续性和数据…...

精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目

精准检测花生豆&#xff1a;基于EfficientNet的深度学习分类项目 在现代农业生产中&#xff0c;作物的质量检测和分类是确保产品质量的重要环节。针对花生豆的检测与分类需求&#xff0c;我们开发了一套基于深度学习的解决方案&#xff0c;利用EfficientNetB0模型实现高效、准…...

【UE5 C++课程系列笔记】13——GameInstanceSubsystem的简单使用

目录 概念 基本使用案例 效果 步骤 概念 UGameInstanceSubsystem 类继承自 USubsystem&#xff0c;它与 GameInstance 紧密关联&#xff0c;旨在为游戏提供一种模块化、可方便扩展和管理的功能单元机制。在整个游戏运行期间&#xff0c;一个 GameInstance 可以包含多个 UGa…...

实用工具推荐----Doxygen使用方法

目录 目录 1 软件介绍 2 Doxygen软件下载方法 3 Doxygen软件配置方法 4 标准注释描述 4.1 块注释 和 特殊描述字符 4.1.1 函数描述示例 4.1.2结构体数组变量示例 特别注意&#xff1a; 4.2单行注释 4.2.1 单个变量注释示例 特别注意&#xff1a; 4.2.2对于枚举变量…...

js垃圾回收机制详细讲解

JavaScript 垃圾回收机制&#xff08;Garbage Collection, GC&#xff09;负责自动管理内存的分配和释放&#xff0c;确保程序在运行时不会因为内存泄漏而崩溃。它的主要任务是回收不再使用的内存空间&#xff0c;防止内存泄漏。JavaScript 的垃圾回收通常由引擎自动完成&#…...

【Linux/踩坑】Linux中启动eclipse或HDFS因JAVA_HOME设置报错

Linux中启动eclipse或hadoop因JAVA_HOME设置报错 eclipseHadoop eclipse 错误提示&#xff1a; A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the follo…...

百度千帆平台构建AI APP的基础概念梳理

百度千帆平台构建AI APP的基础概念梳理 如果想制作大语言模型&#xff08;LLM&#xff09;相关的APP&#xff0c; 将利用百度的千帆平台在国内可能是最便捷的途径&#xff0c;因为百度开发了成熟的工作流&#xff0c;前些年还有些不稳定&#xff0c;现在固定下来了&#xff0c…...

Unity3D Huatuo技术原理剖析详解

前言 在游戏开发领域&#xff0c;Unity3D凭借其强大的跨平台能力和丰富的功能&#xff0c;成为了众多开发者的首选工具。而在Unity3D的生态系统中&#xff0c;Huatuo作为一款重要的插件&#xff0c;为游戏开发带来了极大的便利。本文将深入剖析Huatuo的技术原理&#xff0c;并…...

记Fastjson2的一个报ConcurrentModificationException的bug

错误背景&#xff1a;fastjson2的parseObject方法&#xff0c;在spring webflux项目中被调用&#xff0c;有时会报java.util.ConcurrentModificationException错误。报错处的代码如下图&#xff1a; 改了半天与并发安全相关的代码&#xff0c;还是会报此错误。后来改变思路搜…...

使用TimesFM 对车辆销售进行预测

代码功能概述 导入相关包与设置环境变量&#xff1a; 首先导入了如 os、numpy、pandas 等常用的 Python 库&#xff0c;同时设置了一些与特定库&#xff08;如 XLA_PYTHON_CLIENT_PREALLOCATE 和 JAX_PM AP_USE_TENSORSTORE&#xff09;相关的环境变量&#xff0c;用于优化计算…...

OpenEuler 22.03 不依赖zookeeper安装 kafka 3.3.2集群

零&#xff1a;规划 本次计划安装三台OpenEuler 22.03 版本操作系统的服务器&#xff0c;用于搭建 kafka和flink 集群。因为从kafka 2.8 版本以后开始不依赖 zookeeper &#xff0c;同时考虑到需要找一个发布时间早于 flink 1.17 的kafka 版本且应尽量稳定&#xff0c;综合考虑…...

ubuntu 将python3.8 升级为python3.10并进行版本切换

ubuntu 将python3.8 升级为python3.10并进行版本切换 前言将python3.8 升级为3.10安装pippython版本切换 前言 有一个功能包编译环境需要为python3.10 &#xff0c;但是当前环境为python3.8 &#xff0c;所以需要进行版本升级&#xff0c;编译完还需要把环境切换回来。 将pyt…...

3. Kafka入门—安装与基本命令

Kafka基础操作 一. 章节简介二. kafka简介三. Kafka安装1. 准备工作2. Zookeeper安装2.1 配置文件2.2 启动相关命令3. Kafka安装3.1 配置文件3.2 启动相关命令-------------------------------------------------------------------------------------------------------------…...

如何使用 python创建图片格式转换器

在本篇博客中&#xff0c;我们将通过一个简单的实例来展示如何使用 wxPython 创建一个图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于将图片从一种格式转换为另一种格式。我们将通过以下几个步骤实现这一目标&#xff1a; C:\pythoncode\new\imageconvertty…...

命令行之巅:Linux Shell编程的至高艺术(上)

文章一览 前言一、shell概述1.1 shell的特点和类型1.1.1 **shell的特点&#xff1a;**1.1.2 常用shell类型 1.2 shell脚本的建立和执行1.2.1 建立shell脚本1.2.2 执行shell脚本的方式1.2.3 shell程序实例 二、shell变量与算数运算2.1 简单shell变量2.1.1 简单变量定义和赋值2.1…...

【gulp】gulp 的基本使用

gulp 是一个基于node的自动化打包构建工具&#xff0c;前端开发者可以使用它来处理常见任务&#xff1a; 创建项目 进入项目 npm init -ynpm i gulp -g &#xff08;使用命令 gulp&#xff09;npm i gulp -D # 开发依赖&#xff08;前端工具都是开发依赖 本地安装 代…...

Linux 下处理 ^M 字符的最佳实践

Linux 下处理 ^M 字符的最佳实践 一、快速解决方案 按照优先级排序的三种解决方案: 1. 使用 dos2unix(推荐) # 安装 sudo apt-get install dos2unix # Ubuntu/Debian sudo yum install dos2unix # CentOS# 使用 dos2unix 文件名2. 使用 sed sed...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...