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

Gam*_*ids 7 android soundpool

我正在使用SoundPoolAndroid上的游戏播放sfx声音.在大多数情况下,它完美地工作,除了有时我需要立即停止所有声音而 不是暂停(如果设置为循环与否则无关紧要).我无法弄清楚如何在不知道声音的情况下停止播放StreamID声音.我知道的:

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

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

ane*_*stv 2

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

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

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

不过,我相信如果您稍后想播放任何声音,您可能需要重新加载它们

  • 谢谢您的回答。在某种程度上,这就是我现在所做的。我将声音保存在不同的 SoundPool 中,因此如果声音需要停止,我可以释放 SoundPool。这样其他池中的声音仍然可以播放。它实际上可以工作,并且与活动 soundID 列表(可以单独停止)一起,足以解决我的问题。不过,我不太明白为什么没有更直接的方法来检查 soundID 并按照我的意愿停止或恢复它们。(就像我坐在 CD 播放机前,每次想要停止一首曲目时都会弹出整张 CD;) (2认同)