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

HarmonyOS应用《玄象》开发实战:十二律音频资源的 rawfile 加载与 AudioPlayer 生命周期管理

阅读时长:约 18 分钟 | 难度:★★★★☆ | 篇章:第 9 篇 · 取名乐律地理 AI 助手 对应源码:entry/src/main/ets/pages/music/MusicTwelveLawsPage.ets

前言

玄象项目十二律吕页的音频资源存储在rawfile目录下,通过@ohos.multimedia.audioAudioPlayer播放。本篇将深入剖析玄象项目音频资源加载与播放的实现:从rawfile音频资源目录结构、AudioPlayer创建与播放、play()/pause()/stop()生命周期管理,到多音频播放冲突处理。掌握这套音频播放实现方法论,您就能为任何 HarmonyOS 应用添加音频播放功能。

提示:AudioPlayer 的src属性支持rawfile格式引用。

一、音频资源目录

resources/base/rawfile/audio/ ├── huangzhong.mp3 ├── dalv.mp3 ├── taicu.mp3 ├── jiaxian.mp3 ├── guxi.mp3 ├── zhonglv.mp3 ├── ruibin.mp3 ├── linzhong.mp3 ├── yize.mp3 ├── nanlv.mp3 ├── wushe.mp3 └── yingzhong.mp3

二、AudioPlayer 生命周期

2.1 播放控制

private playLaw(lawName: string): void { try { const audioPlayer = audio.createAudioPlayer(); audioPlayer.src = `rawfile/audio/${lawName}.mp3`; audioPlayer.on('play', () => { hilog.info(0x0000, 'Music', 'Playing'); }); audioPlayer.on('finish', () => { hilog.info(0x0000, 'Music', 'Finished'); }); audioPlayer.on('error', (err) => { hilog.error(0x0000, 'Music', 'Error: %{public}s', err.message); }); audioPlayer.play(); } catch (err) { hilog.error(0x0000, 'Music', 'Play failed: %{public}s', err.message); } }

三、音频播放设计总结

3.1 AudioPlayer 生命周期

createAudioPlayer() → 创建 ↓ src = 'rawfile/audio/xxx.mp3' → 设置资源 ↓ play() → 播放中 ↓ pause() → 暂停 ↓ play() → 恢复 ↓ stop() → 停止 ↓ release() → 释放

总结

本篇以玄象项目十二律音频播放为蓝本,深入剖析了 ArkUI 音频播放的实现:从rawfile音频资源目录结构、AudioPlayer创建与播放、play()/pause()/stop()生命周期管理,到多音频播放冲突处理。掌握这套音频播放实现方法论,您就能为任何 HarmonyOS 应用添加音频播放功能。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • HarmonyOS 官方文档:audio 音频
  • 开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
http://www.jsqmd.com/news/1273714/

相关文章:

  • 运维大模型选型的六大迷思与真相:参数规模、领域微调与私有化部署的决策陷阱分析
  • Docker部署Ferry工单系统:中小企业IT运维实战指南
  • 2026年AI驱动的自动化测试:Python+Selenium+AI完整实战指南
  • 华为手机Bootloader解锁终极指南:用PotatoNV免费解锁麒麟芯片设备
  • Windows 11任务栏拖放功能缺失?3分钟快速修复指南
  • 2026常州持证防水补漏商家权威TOP3榜单 卫生间厨房外墙屋面天花板漏水检测靠谱师傅维修指南 - 宅安选房屋修缮
  • TPS563900双路可编程降压转换器:嵌入式系统电源设计实战指南
  • 微信小程序解包终极指南:5分钟掌握wxappUnpacker核心用法
  • G-Helper:用10MB重新掌控你的华硕笔记本,告别臃肿的Armoury Crate!
  • 2026 中小学生高性价比学习机推荐:5 款热门机型深度盘点,实用不踩坑 - 博客万
  • 2026升级版AI任务仅需2元,熟练后每天操作30分钟
  • WarcraftHelper终极方案:快速解决魔兽争霸III现代系统兼容性问题完整指南
  • BQ27Z855电量计数据闪存配置:平滑滤波与阻抗表优化实战
  • BQ28Z620-R1数据闪存参数配置实战:从核心原理到电动工具BMS设计
  • 自考论文AI检测应对与高效写作工具指南
  • 企业级FP8量化架构设计:Qwen3-1.7B高性能部署与优化技术深度解析
  • Linux联合文件系统技术:UnionFS与OverlayFS深度解析
  • 苏州 18K 彩金回收哪家不压价?首推易奢福,95 家苏州门店统一估价标准 - 遁地的c
  • 文档下载困境的3种高效解决方案:kill-doc开源工具深度解析
  • 2026年长春养老公寓排行 靠谱机构选购参考指南 - 速递信息
  • Unity RPG动作游戏普攻系统实现:从状态机到碰撞检测
  • SPT-AKI Profile Editor:终极《逃离塔科夫》离线存档修改指南
  • 3步实现毫秒级抢票:揭秘Python自动化抢票神器如何战胜黄牛
  • PubMed批量下载完整指南:3分钟掌握科研文献自动化获取技巧
  • BQ41Z50数据闪存配置实战:高级充电算法与电源管理详解
  • 多无人机协同路径规划的Dubins路径Matlab实现
  • 免费开源视频翻译工具:pyVideoTrans让你的视频瞬间国际化
  • OSDI26 | 双路 CPU + 两张 5090,本地跑满血 671B DeepSeek:云端 SLO 是怎么在消费级硬件上达成的
  • RoCEv2无损网络配置实战:PFC与ECN深度调优
  • 7 月性能调优清单:10 个配置改动带来的延迟下降