我正在使用SoundPool
在Android游戏中播放sfx声音。在大多数情况下,它可以很好地工作,除非有时我需要一次停止所有声音 不暂停(如果设置为循环与否则无关紧要)。
我不明白如何在不知道该声音StreamID
的情况下停止播放声音。我所知道的:
soundpool.load(
... 一些声音 ... )
返回 soundID soundpool.play(
soundID )
播放声音并返回 streamID soundpool.stop(
streamID )
停止声音我的问题是,如何在不知道 streamID 的情况下停止声音?我尝试跟踪列表中的所有streamID,但有时会有很多短流同时播放,它无法正常工作。我在SoundPool
中找不到任何方法来获取活动的streamID。有谁知道如何停止所有声音?
任何提示都表示赞赏!感谢
答案 0 :(得分:3)
使用.release()
怎么样?根据文件:
释放SoundPool资源。释放SoundPool对象使用的所有内存和本机资源。无法再使用SoundPool,应将引用设置为null。
我认为它也会阻止一切。 (实际上它导致我的一个应用程序出现错误,这就是我说的原因)
但是,我相信如果您想稍后播放任何声音,您可能需要再次加载。
答案 1 :(得分:3)
我建议使用autoPause()和autoResume()来暂停和重启你的声音。此功能是soundpool的一部分:
http://developer.android.com/reference/android/media/SoundPool.html#autoPause()