
HarmonyOS Next 中Media Kit使用说明及其封装音乐播放器及其背景音乐播放组件 原创
前言
工具帖子,有需要直接用的可以直接拿
通过Media Kit封装音乐播放器以及封装背景音乐使用组件
效果如下:
实现步骤
播放媒体文件的流程为:创建AVPlayer->设置播放资源->设置播放参数(音量/倍速/焦点模式)->播放控制(播放/暂停/跳转/停止)->重置->销毁资源。
我们可以通过AVPlayer的state属性主动获取当前状态或使用on(‘stateChange’)方法监听状态变化。
播放状态变化示意图如下
下方例子为步骤讲解,完整代码放到最后
1.创建AVPlayer
我们通过createAVPlayer()方法用于创建我们的媒体播放组件
同时我们需要绑定我们的回调函数,我们通过这个回调函数,在回调函数中可以获取到组件中需要的信息,比如播放时长、等内容,如下方展示
事件类型 | 说明 |
---|---|
stateChange | 必要事件,监听播放器的state属性改变。 |
error | 必要事件,监听播放器的错误信息。 |
durationUpdate | 用于进度条,监听进度条长度,刷新资源时长。 |
timeUpdate | 用于进度条,监听进度条当前位置,刷新当前时间。 |
seekDone | 响应API调用,监听seek()请求完成情况。当使用seek()跳转到指定播放位置后,如果seek操作成功,将上报该事件。 |
speedDone | 响应API调用,监听setSpeed()请求完成情况。当使用setSpeed()设置播放倍速后,如果setSpeed操作成功,将上报该事件。 |
volumeChange | 响应API调用,监听setVolume()请求完成情况。当使用setVolume()调节播放音量后,如果setVolume操作成功,将上报该事件。 |
bufferingUpdate | 用于网络播放,监听网络播放缓冲信息,用于上报缓冲百分比以及缓存播放进度。 |
audioInterrupt | 监听音频焦点切换信息,搭配属性audioInterruptMode使用。如果当前设备存在多个音频正在播放,音频焦点被切换(即播放其他媒体如通话等)时将上报该事件,应用可以及时处理。 |
添加这些事件的格式为:
我们这里的回调函数作为样例,只选择通过在加上stateChange和error,保证能够正常播放之外,再添加timeUpdate和durationUpdate
所以我们的回调函数为下方样式
可以根据自己的需要进行添加
2.设置播放资源
我们播放音乐肯定要设置播放资源,我把音乐名称,作者和文件都封装成一个类中,如下方展示
首先我们需要把mp3文件放到rawfile目录下
我们将歌曲列表封装好
并将歌曲文件地址装入组件
就可以对播放控制进行封装了
3.播放控制
我们通过timeUpdate和durationUpdate,可以获取到播放时长信息,将信息封装入进度条组件
因为我们通过回调函数获得的时长为毫秒
这个时候我们要将时长转化为 hh:mm:ss的格式,就像这个样子
我们还需要添加一个函数用来转化时间:
4.添加页面
一切准备完整,我们只需要把页面加上,就会变成完整的样子
完整代码:
封装的背景音乐工具类
除此之外,我还封装了一个直接给我们的页面添加背景音乐的工具类
步骤都差不多,所以说实现过程不一一描述了
完整代码:
使用方法:
在我们需要添加背景音乐的页面进行初始化操作
如果需要暂停或播放可以使用
或
页面完整代码和展示:
展示效果
结尾
小工具及其Media Kit的解释,需要的直接复制过来用
