Android中SoundPool的大小限制是多少?

时间:2015-07-24 13:10:05

标签: android

Android中的SoundPool是否有尺寸限制?在this文章中,它说SoundPool播放的声音不应超过 1MB

我需要同时播放多个声音,有时,我可能会超过1MB的限制。我可以依靠SoundPool吗?由于我无法在SoundPool上找到深入的指南,因此我将非常感谢一个明确的答案:)

1 个答案:

答案 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'

https://gitlab.com/olekdia/common/libraries/sound-pool