如何在SoundPool中停止所有声音?

时间:2013-09-13 19:41:19

标签: android soundpool

我正在使用SoundPool在Android游戏中播放sfx声音。在大多数情况下,它可以很好地工作,除非有时我需要一次停止所有声音 不暂停(如果设置为循环与否则无关紧要)。 我不明白如何在不知道该声音StreamID的情况下停止播放声音。我所知道的:

  • soundpool.load( ... 一些声音 ... )返回 soundID
  • soundpool.play( soundID )播放声音并返回 streamID
  • soundpool.stop( streamID )停止声音

我的问题是,如何在不知道 streamID 的情况下停止声音?我尝试跟踪列表中的所有streamID,但有时会有很多短流同时播放,它无法正常工作。我在SoundPool中找不到任何方法来获取活动的streamID。有谁知道如何停止所有声音? 任何提示都表示赞赏!感谢

2 个答案:

答案 0 :(得分:3)

使用.release()怎么样?根据文件:

  

释放SoundPool资源。释放SoundPool对象使用的所有内存和本机资源。无法再使用SoundPool,应将引用设置为null。

我认为它也会阻止一切。 (实际上它导致我的一个应用程序出现错误,这就是我说的原因)

但是,我相信如果您想稍后播放任何声音,您可能需要再次加载

答案 1 :(得分:3)

我建议使用autoPause()和autoResume()来暂停和重启你的声音。此功能是soundpool的一部分:

http://developer.android.com/reference/android/media/SoundPool.html#autoPause()