鸿蒙应用与开发-如何在应用中播放音频文件
目录
1.创建AVPlayer的对象实例
2.监听avPlayer的状态改变做出相应的判断
3.设置播放源
4.停止播放
在鸿蒙应用开发中会设计到很多实用音频的效果,这个小案例主要介绍在鸿蒙用ArkTS中的AVPlayer 对象实例来播放音频,并根据播放状态做出相应的处理。
音频调用播放逻辑图
1.创建AVPlayer的对象实例
要使用 AVPlayer 播放音频,首先需要创建 AVPlayer 的对象实例。下面是在 ArkTS中创建 AVPlayer 实例的示例代码:
// 1. 创建了AVplayer对象实例
const avPlayer = await media.createAVPlayer()
this.avplayer = avPlayer
2.监听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
}