9

我正在使用SoundPool在 Android 上的游戏中播放 sfx 声音。在大多数情况下它工作得很好,除了有时我需要立即停止所有声音而 不是暂停(不管它们是否设置为循环)。在不知道声音的情况下,我无法弄清楚如何阻止声音播放StreamID。我知道的:

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

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

4

2 回答 2

4

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

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

于 2014-06-15T06:31:41.253 回答
2

怎么用.release()?根据文档:

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

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

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

于 2013-12-15T19:22:36.543 回答