Android中的SoundPool
是否有尺寸限制?在this文章中,它说SoundPool播放的声音不应超过 1MB 。
我需要同时播放多个声音,有时,我可能会超过1MB的限制。我可以依靠SoundPool吗?由于我无法在SoundPool上找到深入的指南,因此我将非常感谢一个明确的答案:)
答案 0 :(得分:0)
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'