鸿蒙应用与开发-如何在应用中播放音频文件

349 阅读2分钟

鸿蒙应用与开发-如何在应用中播放音频文件

目录

1.创建AVPlayer的对象实例

2.监听avPlayer的状态改变做出相应的判断

3.设置播放源

4.停止播放

在鸿蒙应用开发中会设计到很多实用音频的效果,这个小案例主要介绍在鸿蒙用ArkTS中的AVPlayer 对象实例来播放音频,并根据播放状态做出相应的处理。

音频调用播放逻辑图

image.png

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
}