目录:
1.创建AVPlayer的对象实例
2.监听avPlayer的状态改变做出相应的判断
3.设置播放源
4.停止播放
5.ArkTS中完整的播放音频函数代码
在鸿蒙应用开发中会设计到很多实用音频的效果,这个小案例主要介绍在鸿蒙用ArkTS中的AVPlayer 对象实例来播放音频,并根据播放状态做出相应的处理。
音频调用播放逻辑图
1.创建AVPlayer的对象实例
要使用 AVPlayer 播放音频,首先需要创建 AVPlayer 的对象实例。下面是在 ArkTS中创建 AVPlayer 实例的示例代码:
// 1. 创建了AVplayer对象实例 const avPlayer = await media.createAVPlayer() this.avplayer = avPlayer2.监听avPlayer的状态改变做出相应的判断
一旦创建了 AVPlayer 实例,我们可以监听其状态改变事件,并根据状态做出相应的处理。示例代码演示如何监听 AVPlayer 的状态改变:
avPlayer.on("stateChange", async (state) => { if (state === "initialized") { // 表示avPlayer已经设置了播放源 avPlayer.prepare() } if (state === "prepared") { // 表示avPlayer已经进入了准备播放状态,此时就可以通知播放了 // 设置avPlayer循环播放音频 avPlayer.loop = true avPlayer.play() // promptAction.showToast({ message: '正在播放' }) console.log('正在播放') } })
3.设置播放源
在播放音频之前,需要将音频文件的 URL 设置为 AVPlayer 的播放源。下面是设置播放源的示例代码:
// 3. 设置播放源 avPlayer.url = url
4.停止播放
当需要停止播放音频时,可以调用 AVPlayer 的 stop 方法。下面是停止播放的示例代码:
// 4. 停止播放 this.avplayer.stop()
5.ArkTS中完整的播放音频函数代码
async playMp3(url: string) { // 1. 创建了AVplayer对象实例 const avPlayer = await media.createAVPlayer() this.avplayer = avPlayer // 2. 监听avPlayer的状态改变 //avPlayer的状态机 avPlayer.on("stateChange", async (state) => { if (state === "initialized") { // 表示avPlayer已经设置了播放源 avPlayer.prepare() } if (state === "prepared") { // 表示avPlayer已经进入了准备播放状态,此时就可以通知播放了 // 设置avPlayer循环播放音频 avPlayer.loop = true avPlayer.play() // promptAction.showToast({ message: '正在播放' }) console.log('正在播放') } }) // 3. 设置播放源 avPlayer.url = url }