有可靠的方法来防止soundpool中声音被截断吗?我已经通过在声音之间使用sleep()函数取得了一些成功,但它们有时仍会错过另一个声音开始前的最后一点声音。我的应用程序按顺序播放短声音。
当我的应用程序启动时,我使用MediaPlayer获取每个声音的持续时间,并将R.id.sound_name值和持续时间一起存储。然后我可以使用SoundPool播放声音。
获取持续时间的代码:
private long getSoundDuration(int rawId){
MediaPlayer player = MediaPlayer.create(context, rawId);
int duration = player.getDuration();
return duration;
}
确保您拥有足够的流。
在SoundPool构造函数中,第一个参数是MaxStreams。将其设置为您认为合适的值。我猜8个左右应该足够了...但根据您的声音情况可能需要更多。