# audioPlayer_音乐播放器鸿蒙 **Repository Path**: she-haotian/audioPlayer ## Basic Information - **Project Name**: audioPlayer_音乐播放器鸿蒙 - **Description**: 简易鸿蒙音乐播放器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-01-07 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 音乐播放器(audio Player) ## 功能介绍 一款鸿蒙版简易的音频播放器,用户可以通过该播放器播放自己本地音乐 ## 需求拆分 - 支持本地音乐的播放。 - 提供播放、暂停、上一首、下一首等基本播放控制 - 支持播放模式切换(单曲循环、列表循环、随机播放)。 - 支持进度条控制音乐进度 ## 模块设计 - 启动模块: 初始化音频管理 - Screenshot_2024-11-28T103110 - 音乐列表模块: 展示音乐列表,点击后可以播放 - Screenshot_2024-11-28T103112 - 音乐播放模块: 对音频进行管理,上一首,下一首,播放,暂停,进度控制 - Screenshot_2024-11-28T103144 ## 运行逻辑 1. 用户启动音频播放器 2. 进入到启动页,初始化AVplayerManage类,并把实例传入AppStore, 能够全局获取到AVplayerManage实例 3. 4. 在播放页获取AVplayerManage实例通过UI控件控制AVplayerManage实例进行管理播放,暂停,上一首,下一首等等 ## 工程文件结构 ![企业微信截图_17326996946148](assets/企业微信截图_17326996946148.png) ## 实现思路 1、准备好音频文件,以及封面 ![image-20241128091015605](assets/image-20241128091015605.png) 2、准备好音频类型,以及数据 ![image-20241128091125228](assets/image-20241128091125228.png) 3、进行音频管理类编写 ​ 属性 ![image-20241128091839197](assets/image-20241128091839197.png) 状态回调整体封装,更改播放源之后可以进行播放 ![image-20241128092050970](assets/image-20241128092050970.png) 在构造函数里面初始化 ![image-20241128092435900](assets/image-20241128092435900.png) 设置播放源函数 ![image-20241128092748731](assets/image-20241128092748731.png) 监听playId,每次playId被改变后触发更改播放源进行播放,并且编写一个监听方法传入一个回调方法,在playId后触发,主要是实现在类里面操作的时候能够影响外面的状态变量 ![image-20241128093943888](assets/image-20241128093943888.png) ![image-20241128094035864](assets/image-20241128094035864.png) 实现上一首下一首播放,主要是对id进行操作,后续会考虑对音频数组的下标进行操作获取id,毕竟音频id不可能是连号的。开始没考虑这一点。实现播放暂停 ![image-20241128094258509](assets/image-20241128094258509.png) 实现进度条,进度监听,进度条最大值监听。进度条点击设置进度,进度条拖动设置进度,进度条返回的是毫秒数还需要格式化成xx:xx格式 ![image-20241128095152447](assets/image-20241128095152447.png) ![image-20241128095206857](assets/image-20241128095206857.png) 播放模式设置 ![image-20241128095241142](assets/image-20241128095241142.png) ![image-20241128095253364](assets/image-20241128095253364.png) ![image-20241128095355038](assets/image-20241128095355038.png) ![image-20241128100144402](assets/image-20241128100144402.png) ## 接口设计 AVPlayerManage类进行汇总说明 属性说明 | 属性 | 类型 | 释义 | 默认值 | | :-----------: | :-------------------------------------: | :------------------------------------: | :--------------------: | | avPlayer | media.AVPlayer \| undefined = undefined | AVPlayer音频播放实例 | - | | playId | number | 音乐id,更改后会触发播放源进行播放 | 0 | | musicPlayMode | MusicPlayMode | 播放模式:列表循环、随机播放、单曲循环 | MusicPlayMode.ListLoop | | musicListData | MusicItem[] | 音乐列表,用于后续创建歌单 | - | 方法说明 | 方法名 | 参数 | 必填 | **说明** | | :------------------------------------: | :----------------------------------: | :----------------------: | :--------------------------------------------------------: | | initAVPlayer() | 无 | 否,创建实例时自动触发 | 初始化AVPlayerManage | | setAVPlayerCallback() | avPlayer: media.AVPlayer | 否,创建实例时自动触发 | 设置avplayer各种状态回调,创建实例自动触发 | | avPlayerFdSrcDemo() | playId: number | 否,设置playId后自动触发 | 用于设置播放源,后自动播放 | | previousMusic() | 无 | 否 | 用于切换上一首音乐 | | nextMusic() | 无 | 否 | 用于切换下一首音乐 | | musicPlay() | 无 | 否 | 用于暂停后播放音乐 | | musicPause() | 无 | 否 | 用于播放后暂停音乐 | | sliderMax() | callback(duration: number): Function | 否 | 在设置播放源之后触发,回调里参数是进度条最大值,返回毫秒数 | | sliderValue() | callback(time:number): Function | 否 | 播放后100毫米触发一次,用于更新进度条当前值,返回毫秒数 | | offSliderValue() | 无 | 否 | 取消监听进度条当前值 | | sliderSet() | sliderValue: number | 是 | 设置当前进度,传入毫秒数 | | formatMillisecondsToMinutes(): string | milliseconds: number | 是 | 传入毫秒数返回分钟字符串xx:xx格式 | | randomNumber(): number | 无 | 否 | 生成一个1-x并不包含y的整数,y在1-x之间 |