引言
SoundPool适用于低延迟、短音频播放场景(如游戏音效),支持同时管理多个音频流。本文将演示如何使用SoundPool实现短音频的加载和播放。

功能概述
实现短音频的加载、播放、循环控制及播放完成监听。

关键代码示例

// 创建SoundPool实例
import { media } from '@kit.MediaKit';
let soundPool: media.SoundPool;

// 初始化SoundPool
media.createSoundPool(5, {
  usage: audio.StreamUsage.STREAM_USAGE_MUSIC
}).then((pool) => {
  soundPool = pool;
  // 加载音频资源
  const uri = 'fd://123'; // 音频文件fd
  soundPool.load(uri).then((soundId) => {
    // 播放音频
    const playParams: media.PlayParameters = {
      loop: 0,    // 循环次数
      rate: 1.0,  // 播放速率
      leftVolume: 1.0,
      rightVolume: 1.0
    };
    soundPool.play(soundId, playParams);
  });
});

// 监听播放完成事件
soundPool.on('playFinished', () => {
  console.log('Audio playback completed');
});

代码解释

创建SoundPool:通过createSoundPool方法创建实例,指定最大音频流数量。
加载音频:使用load方法加载音频文件,返回唯一音频ID。
播放控制:通过play方法播放指定ID的音频,支持循环和音量设置。
事件监听:通过playFinished事件监听播放完成状态。
常见问题

Q:如何管理多个音频流?
A:通过不同音频ID调用play方法,可控制多个音频流同时播放。
Q:音频加载失败如何处理?
A:在load方法中使用catch捕获错误,进行重试或提示用户。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐