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

HarmonyOS黑马云音乐项目:全场景在线音乐播放的实现与优化

黑马云音乐是基于HarmonyOS 5.0开发的综合性音乐应用,近期猫哥通过引入网络听歌功能,实现了从本地播放到云端在线免费听歌的全面升级。项目结合ArkTS声明式开发范式与HarmonyOS分布式能力,打造了适配手机、平板、鸿蒙电脑的全场景音乐体验。

现已支持在线听歌啦,欢迎下载体验。

开源地址:https://gitcode.com/nutpi/heimayun

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

一、核心功能亮点

网络听歌与数据动态化

使用@nutpi/axios三方库调用猫哥提供的音乐接口,实现歌曲列表、专辑封面等数据的云端获取。
通过双重类型映射确保数据结构安全:将接口返回的MusicMenuRespDataSongs映射为前端SongItemType,保障字段名称与类型严格匹配。

示例代码片段:

getMusicMenu(0,20).then((res) => {this.recommendList = res.data.data.map((it) => ({title: it.title,img: it.cover,count: `${it.songs.length}`,songs: it.songs.map((songItem): SongItemType => ({img: songItem.cover,name: songItem.song,author: songItem.sing,url: songItem.url,id: songItem.sid}))})) as recommendListType[];
});

轮播图与交互设计

基于Swiper组件实现首页轮播,数据源来自接口动态获取的推荐歌单。
支持手势滑动切换,并自动关联歌曲列表点击事件,触发播放页跳转。
跨端播放控制

播放器核心逻辑:通过AvPlayerManager管理播放状态,支持播放进度控制(seek方法)、上一首/下一首切换及暂停/恢复功能。
// 播放进度跳转

static async seek(time: number) {AvPlayerManager.avPlayer.seek(time);
}

全局状态管理:使用@State装饰器同步当前播放歌曲信息,确保页面间数据一致性。

后台接口实现:

/*** 音乐相关api接口实现*/
import { HttpPromise } from '@nutpi/axios';
import { axiosClient } from '../../ulits/axiosClient';
import { HotMusicResp } from '../model/HotMusicResp';
import { MusicMenuResp } from '../model/MusicMenuResp';// 1.获取新歌热歌榜接口
export const getHotMusics = (start:number,count:number): HttpPromise<HotMusicResp> => axiosClient.post({url:'/musicmenus',data: { start:start,count:count,kind:'topWyMusic' }});// 2.获取推荐歌单接口
export const getMusicMenu = (start:number,count:number): HttpPromise<MusicMenuResp> => axiosClient.get({url:'/getsongmenu',params: { start:start,count:count }});

二、多端适配与性能优化

小屏设备体验

分屏状态下优化播放页布局,支持上下滑动隐藏顶部栏,最大化可视区域。
动态调整图片尺寸,避免封面图片变形。
大屏设备适配

平板与鸿蒙电脑端采用分级导航与沉浸式标题栏,首页支持手势缩放调整列表列数。
专辑页适配横竖屏模式,确保封面完整展示;Web页弹窗居中显示,避免布局遮挡。
鸿蒙电脑专属功能

新增键盘快捷键(如空格键暂停/播放、方向键切歌),提升操作效率。
结合分布式能力,支持跨设备续播(需登录同一华为账号)。

三、技术难点与解决方案

类型安全校验

问题:ArkTS严格类型检查导致对象字面量报错(如arkts-no-untyped-obj-literals)。
解决:显式声明接口recommendListType和SongItemType,使用as类型断言确保编译通过。

播放器状态同步

问题:多页面间播放状态容易不同步。

解决:通过AvPlayerManager单例模式统一管理播放器实例,结合Emitter事件通知更新UI。

四、总结与展望

黑马云音乐项目通过HarmonyOS的全场景能力,实现了从数据获取到播放控制的全链路优化。未来计划引入MV播放(参考鸿蒙版酷我音乐的HarmonyOS AVPlayer方案)及歌词同步功能,进一步丰富视听体验。开发者可通过该项目深入掌握ArkTS类型系统、分布式数据管理及多端UI适配等核心技能。

项目源码与资源

后台接口地址:由猫哥提供(仅限学习用途)

https://blog.csdn.net/yyz_1987/article/details/154404554?spm=1001.2014.3001.5501

项目仓库:参考黑马云音乐开源代码(需替换为实际路径)

开源地址

https://gitcode.com/nutpi/heimayun

https://gitee.com/yyz116/heimayun

依赖库:@nutpi/axios@1.0.4

(注:本文代码示例均基于HarmonyOS 5.0.0+版本,需确保开发环境配置正确)

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

相关文章:

  • 804.唯一的摩尔斯密码词(uthash)
  • 公司做网站域名归谁大学生做兼职上什么网站好
  • 网站分类代码网站建设经营服务合同范本
  • 手机网站设计案例电子商务网站建设个人总结
  • 【算法】--位运算
  • 门户网站的案例分析开发游戏用什么软件
  • 网站建设目标个人博客dwzh-cn 安装wordpress
  • 长沙网站优化步骤哈尔滨网站建设渠道
  • 浏览器打开网站wordpress表情不显示
  • 网站图片都是站外连接对seo小公司做网站推广好不好
  • 网站配置到iis后读不了数据seo优化百度技术排名教程
  • 第7章树和二叉树:线索二叉树
  • 网站专题制作流程深圳建网站哪个好
  • java的tomcat源码的http的session
  • 黑河北京网站建设网站架构计划书
  • 局域网网站建设软件怎么自己开公司
  • 网站建设是系统工程广州网站建设 名片制作 网站管理
  • 静态网站做淘宝客如何做英文网站的外链
  • 企业二级网站怎么做建邺做网站价格
  • 【Envi遥感图像处理】018:envi编辑头文件的方法及具体应用
  • RHCE复习作业2
  • AUTOACT论文翻译
  • html5 做手机网站什么是做学院网站
  • ipad 建网站电商入门教学
  • e2ee网站开发框架2.23先行版wordpress小论坛小程序
  • 携程网建设网站的理由济南智能网站建设报价
  • flash网站在线diy源码如何做网站首页关键词
  • B树与B+树核心差异深度解析
  • 11.9 脚本调试 手机网页调试参考
  • 制作网站公司网址开发公司公司简介