HarmonyOS鸿蒙Next中如何播放1秒的短音频呢

HarmonyOS鸿蒙Next中如何播放1秒的短音频呢 我按照官方 代码 示例 :播放不了 1S 的短音频,谁能解释下 ,播放个 短音频 怎么 这么 麻烦啊。

我想实现的是 点击一个按钮,播放一次这个短音频:按钮事件代码如下:

Button('-', { type: ButtonType.Normal, stateEffect: true })
  .borderRadius(8)
  .backgroundColor(0x317aff)
  .width(70)
  .height(30)
  .onClick(()=>{
    if(this.time - 1 >=0){
      //this.player.avPlayer.reset();
      this.avPlayer.avPlayerFdSrcDemo(); //播放短音频
      this.time--;
    }
  })

官方代码示例如下:

// 以下demo为使用资源管理接口获取打包在HAP内的媒体资源文件并通过fdSrc属性进行播放示例
public async avPlayerFdSrcDemo(){
  console.info('fuck called 1.');
  // 创建avPlayer实例对象
  this.avPlayer = await media.createAVPlayer();
  console.info('fuck called 2.');
  // 创建状态机变化回调函数
  //this.setAVPlayerCallback();
  console.info('fuck called 3.');
  // 通过UIAbilityContext的resourceManager成员的getRawFd接口获取媒体资源播放地址
  // 返回类型为{fd,offset,length},fd为HAP包fd地址,offset为媒体资源偏移量,length为播放长度
  let context = await getContext(this) as common.UIAbilityContext;
  console.info('fuck called 4.');
  let fileDescriptor = null;
  try {
      fileDescriptor = await context.resourceManager.getRawFd("3055.mp3", (error, value) => {
      if (error != null) {
        console.log(`callback getRawFd failed error code: ${error.code}, message: ${error.message}.`);
      } else {
        let fd = value.fd;
        let offset = value.offset;
        let length = value.length;
      }
    });
  } catch (error) {
    console.error(`callback getRawFd failed, error code: ${error.code}, message: ${error.message}.`)
  };


  console.info('fuck called 5.');
  // 为fdSrc赋值触发initialized状态机上报
  this.avPlayer.fdSrc = fileDescriptor;
  console.info('fuck called 6.');
}

更多关于HarmonyOS鸿蒙Next中如何播放1秒的短音频呢的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

您好,请您通过在线提单进一步解决:https://developer.huawei.com/consumer/cn/support/feedback/#/,感谢您的反馈和支持。

更多关于HarmonyOS鸿蒙Next中如何播放1秒的短音频呢的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


解决了吗,在线求答案

解决了吗,在线求答案

肯定是有人搞出来了,都试用过成品了,就是没人发出来

各位解决了吗?

您好,现在解决了嘛?

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

我也是这个需求,找不到一个简单的实例。

在HarmonyOS鸿蒙Next中播放1秒的短音频,可以使用AudioPlayer类。首先,确保音频文件已放置在项目的resources/rawfile目录下。然后,通过以下代码实现播放:

import audio from '@ohos.multimedia.audio';

// 创建AudioPlayer实例
let audioPlayer = audio.createAudioPlayer();

// 设置音频源
audioPlayer.src = 'resource://rawfile/short_audio.mp3';

// 准备播放
audioPlayer.prepare((err) => {
    if (!err) {
        // 开始播放
        audioPlayer.play((err) => {
            if (err) {
                console.error('播放失败');
            } else {
                console.log('播放成功');
            }
        });
    } else {
        console.error('准备失败');
    }
});

// 监听播放完成事件
audioPlayer.on('ended', () => {
    console.log('播放结束');
    audioPlayer.release();
});

这段代码会播放short_audio.mp3文件,并在播放完成后释放资源。

在HarmonyOS鸿蒙Next中,可以使用AudioPlayer类来播放短音频。首先,创建一个AudioPlayer实例,然后通过setSource方法设置音频源,接着调用preparestart方法进行播放。以下是一个简单的代码示例:

AudioPlayer audioPlayer = new AudioPlayer();
audioPlayer.setSource(ResourceTable.Media_short_audio); // 设置音频资源
audioPlayer.prepare();
audioPlayer.start();

确保音频文件(如short_audio.mp3)已放置在resources/media目录下,并在ResourceTable中正确引用。播放完成后,调用release方法释放资源。

回到顶部