Android soundpool timing

问题描述:

有没有一种可靠的方法来防止在soundpool中截断声音?我已经在声音之间用sleep()函数取得了一些成功,但是在开始另一个声音之前他们有时会错过最后一个声音。我的应用按顺序播放短音。 JerryAndroid soundpool timing

确保您有足够的流。在SoundPool构造函数中使用 ,第一个参数是MaxStreams。 将其设置为你认为合适的任何一种。 8左右应该足够我猜...但你可能需要更多,这取决于你的声音。

+0

谢谢。增加流量帮助。 – trinth 2010-12-02 08:09:44

尽管这是一个老问题,我想我会发布一些东西在这里,因为我无法找到一个解决这个问题的在线,但没有拿出一个解决方案的东西...

我得到的时间每个声音(使用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的工作非常适合我,但我无法担保其他任何事情。
+1

在获得持续时间后,不要忘记致电player.release()。如果MediaPlayer实例事先被垃圾收集,则会出现错误。这可能会导致内存泄漏,但我不确定这一点。 – 2013-08-28 20:49:22