Android soundpool timing
有没有一种可靠的方法来防止在soundpool中截断声音?我已经在声音之间用sleep()函数取得了一些成功,但是在开始另一个声音之前他们有时会错过最后一个声音。我的应用按顺序播放短音。 JerryAndroid soundpool timing
确保您有足够的流。在SoundPool构造函数中使用 ,第一个参数是MaxStreams。 将其设置为你认为合适的任何一种。 8左右应该足够我猜...但你可能需要更多,这取决于你的声音。
尽管这是一个老问题,我想我会发布一些东西在这里,因为我无法找到一个解决这个问题的在线,但没有拿出一个解决方案的东西...
我得到的时间每个声音(使用MediaPlayer)时,我的应用程序启动时,并将R.id.sound_name值和持续时间一起存储。然后我可以使用SoundPool播放声音。
代码获取时间:
private long getSoundDuration(int rawId){
MediaPlayer player = MediaPlayer.create(context, rawId);
int duration = player.getDuration();
return duration;
}
在我的声级,然后我打声像往常一样,然后睡的持续时间。很简单的东西。
似乎很好。为我带来了SoundPool低延迟的优势,以及链接事物的能力。
几件事情要注意:
- 每次不要持续时间,与创建的MediaPlayer有开销。
- 持续时间取自文件元数据 - ogg的工作非常适合我,但我无法担保其他任何事情。
在获得持续时间后,不要忘记致电player.release()。如果MediaPlayer实例事先被垃圾收集,则会出现错误。这可能会导致内存泄漏,但我不确定这一点。 – 2013-08-28 20:49:22
谢谢。增加流量帮助。 – trinth 2010-12-02 08:09:44