鸿蒙Next中SoundPool如何实现一个循环播放一个只播一次

在鸿蒙Next开发中,使用SoundPool播放音频时,如何设置循环播放某个音效,同时让另一个音效只播放一次?需要具体的代码示例或参数配置说明,比如是否通过setLoop()方法区分控制?求实现思路和注意事项。

2 回复

鸿蒙Next里,SoundPool循环播放用setLoop(loopCount),填-1就是无限循环。只播一次就填0或1,简单得像单曲循环和切歌的区别。代码写对,耳朵享福!

更多关于鸿蒙Next中SoundPool如何实现一个循环播放一个只播一次的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,使用SoundPool实现循环播放和单次播放可以通过设置播放模式来实现。以下是具体方法和示例代码:

1. 循环播放

使用play()方法,并将loop参数设置为-1,表示无限循环播放。

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

// 创建SoundPool实例
let soundPool: soundPool.SoundPool = soundPool.createSoundPool();

// 加载音频资源(假设audioId为1)
let audioId: number = 1;
soundPool.load(audioId, (err) => {
  if (err) {
    console.error('加载音频失败');
    return;
  }
  
  // 循环播放:loop参数设为-1
  let streamId: number = soundPool.play(audioId, {
    loop: -1,  // 循环播放
    rate: 1.0  // 播放速率
  }, (err) => {
    if (err) {
      console.error('播放失败');
    }
  });
});

2. 单次播放

loop参数设置为0,表示只播放一次。

// 单次播放:loop参数设为0
let streamId: number = soundPool.play(audioId, {
  loop: 0,  // 单次播放
  rate: 1.0
}, (err) => {
  if (err) {
    console.error('播放失败');
  }
});

关键参数说明:

  • loop:
    • -1:无限循环
    • 0:播放一次
    • n(正整数):循环n次
  • rate: 播放速率(1.0为正常速度)

注意事项:

  1. 确保音频资源已正确加载(通过load()方法)。
  2. 使用play()返回的streamId可以控制播放(如暂停、停止)。
  3. 资源使用后及时调用release()释放。

通过调整loop参数即可灵活控制播放次数。

回到顶部