# audioTools **Repository Path**: cx1719925369/audio-tools ## Basic Information - **Project Name**: audioTools - **Description**: 鸿蒙开源组件,针对AVPlayer提供一系列封装Api - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-15 - **Last Updated**: 2025-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: HarmonyOS组件 ## README 下面是为你的鸿蒙媒体播放器组件设计的Gitee仓库README,涵盖了功能介绍、使用方法和贡献指南: # 鸿蒙媒体播放器组件 这是一个专为鸿蒙操作系统设计的高性能媒体播放器组件,采用TypeScript开发,支持多种音频格式播放、播放列表管理和播放模式切换。组件遵循鸿蒙开发规范,提供简洁易用的API接口,可轻松集成到各类鸿蒙应用中。 ## 功能特性 - 支持单曲播放、播放列表管理 - 提供顺序播放、随机播放和单曲循环三种播放模式 - 实时更新播放进度和歌曲时长 - 支持歌曲切换、暂停/播放控制 - 完整的错误处理和状态管理机制 - 简洁的事件系统,便于UI组件集成 ## 安装使用 1. 将组件文件复制到你的鸿蒙项目中:(后续将提交至鸿蒙三方库) ``` └── src └── main └── ets └── common └── AVPlayerClass.ets ``` 2. 在需要使用播放器的页面引入组件: ```typescript import { AVPlayerClass, EmitEventType } from '../common/AVPlayerClass'; ``` 3. 初始化播放器: ```typescript // 在页面生命周期函数中初始化 aboutToAppear() { AVPlayerClass.init(); } ``` 4. 使用播放器API控制播放: ```typescript // 播放歌曲 AVPlayerClass.singlePlay('your-music-url'); // 切换播放状态 AVPlayerClass.pause(); // 切换播放模式 AVPlayerClass.changeMode('random'); // 上一首/下一首 AVPlayerClass.previous(); AVPlayerClass.next(); ``` ## API文档 ### AVPlayerClass静态属性 | 属性名 | 类型 | 描述 | |--------------|--------------------|-----------------------| | player | media.AVPlayer | 播放器实例 | | duration | number | 当前歌曲总时长(毫秒) | | time | number | 当前播放位置(毫秒) | | isPlay | boolean | 播放状态 | | playMode | 'auto'/'repeat'/'random' | 播放模式 | | playList | string[] | 播放列表 | | playIndex | number | 当前播放歌曲索引 | ### AVPlayerClass静态方法 | 方法名 | 参数 | 描述 | |----------------|--------------------|--------------------------| | init() | 无 | 初始化播放器 | | singlePlay(url)| url: string | 播放指定URL的歌曲 | | changePlay() | 无 | 切换歌曲 | | pause() | 无 | 暂停播放 | | changeMode(mode)| mode: 播放模式 | 切换播放模式 | | previous() | 无 | 播放上一首 | | next() | 无 | 播放下一首 | | remove(index) | index: number | 从播放列表删除指定歌曲 | | reset() | 无 | 重置播放器 | | updateState() | 无 | 更新播放状态 | ## 贡献指南 1. Fork本仓库 2. 创建你的特性分支 (`git checkout -b feature/fooBar`) 3. 提交你的修改 (`git commit -am 'Add some fooBar'`) 4. 将分支推送到Gitee (`git push origin feature/fooBar`) 5. 提交Pull Request ## 许可证 本项目采用MIT许可证,详情见LICENSE文件。 ## 联系我们 如果你有任何问题或建议,请通过Gitee Issues联系我们。 ## 使用示例 以下是一个简单的鸿蒙UI组件中使用播放器的示例: ```typescript // 在UI组件中使用播放器 @Entry @Component struct MusicPlayerPage { @State currentTime: string = '00:00'; @State totalTime: string = '00:00'; @State isPlaying: boolean = false; aboutToAppear() { AVPlayerClass.init(); // 监听播放状态更新 AVPlayerClass.on(EmitEventType.UPDATE_STATE, (state: PlayStateType) => { this.currentTime = this.formatTime(state.time); this.totalTime = this.formatTime(state.duration); this.isPlaying = state.isPlay; }); } formatTime(time: number): string { // 时间格式化方法 const minutes = Math.floor(time / 60000); const seconds = Math.floor((time % 60000) / 1000); return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; } build() { Column() { // 播放器UI组件 Text(`${this.currentTime} / ${this.totalTime}`) .fontSize(16) Row() { Button('上一首') .onClick(() => AVPlayerClass.previous()) Button(this.isPlaying ? '暂停' : '播放') .onClick(() => { if (this.isPlaying) { AVPlayerClass.pause(); } else { AVPlayerClass.singlePlay('your-music-url'); } }) Button('下一首') .onClick(() => AVPlayerClass.next()) } .width('100%') .justifyContent(FlexAlign.SpaceAround) } .width('100%') .height('100%') .padding(20) } } ```