安卓系统中的SoundPool
有大小限制吗?在这文章中,它指出使用SoundPool播放的声音不应超过1MB的。
我需要同时播放多个声音,有时,我可能会超过1MB的限制。在这方面,我可以依赖SoundPool吗?由于我找不到关于SoundPool的深度指南,所以我们将非常感谢给出一个清晰的答案:)
发布于 2019-11-11 12:17:55
SoundPool是非常有限的,是的,它有硬编码的缓冲区大小限制,如果您超过它,您将得到沉默与错误在logcat。而且,它是用本机cpp编写的,很难调试发生了什么。不同版本的Android有特定的问题。
我写了SoundPoolCompat,它在引擎盖下使用AudioTrack。您可以传递自定义的bufferSize
,并且该缓冲区中的所有数据都将被加载到内存中,并像SoundPool那样以较小的延迟播放。所有超过该bufferSize
的数据都将按需加载(这会增加延迟,类似于MediaPlayer)。Api非常类似于SoundPool,它还添加了从Uri (例如gdrive)加载声音。并且有playOnce方法,文件播放后所有资源都将被卸载。我也在SoundPool和MediaPlayer的应用程序中使用它。
implementation 'com.olekdia:sound-pool:3.0.2'
https://stackoverflow.com/questions/31611411
复制相似问题