Android soundpool计时

jad*_*ns4 3 android soundpool

有没有可靠的方法来防止在soundpool中截断声音?我在声音之间的sleep()函数方面取得了一些成功,但是在开始另一个声音之前它们有时仍会错过最后一点声音.我的应用程序按顺序播放短音.杰瑞

小智 5

虽然这是一个老问题,我想我会在这里发布一些东西,因为我在网上找不到解决这个问题的方法,但确实提出了一些解决方案......

当我的应用程序启动时,我得到每个声音的持续时间(使用MediaPlayer),并将R.id.sound_name值和持续时间存储在一起.然后我可以使用SoundPool播放声音.

获取持续时间的代码:

private long getSoundDuration(int rawId){
  MediaPlayer player = MediaPlayer.create(context, rawId);
  int duration = player.getDuration();
  return duration;
}
Run Code Online (Sandbox Code Playgroud)

在我的声音课上,我像往常一样播放声音,然后睡觉一段时间.非常简单的东西.

似乎运作良好.给我SoundPool的低延迟优势,以及连锁东西的能力.

有几点需要注意:

  • 不要每次都获得持续时间,因为创建MediaPlayer会产生开销.
  • 持续时间来自文件元数据 - ogg的工作对我很有用,但我无法保证其他任何东西.