Android 中的 SoundPool
有大小限制吗?在 this文章中,它说使用 SoundPool 播放的声音不应超过 1MB 。
我需要同时播放多个声音,有时,我可能会超过 1MB 限制。我可以依靠 SoundPool 来实现这一点吗?由于我找不到有关 SoundPool 的深入指南,因此我们将非常感谢您提供明确的答案:)
最佳答案
SoundPool 非常有限,是的,它有硬编码的缓冲区大小限制,如果超过它,您将在 logcat 中得到沉默并出现错误。而且它是用 native cpp 编写的,很难调试发生的事情。不同版本的 Android 都有特定的问题。
我编写了 SoundPoolCompat,它在底层使用了 AudioTrack。您可以传递自定义 bufferSize
,该缓冲区中的所有数据都将加载到内存中,并像 SoundPool 一样以较小的延迟播放。所有超过 bufferSize 的数据都将按需加载(这会增加延迟,类似于 MediaPlayer)。
Api 与 SoundPool 非常相似,也添加了从 Uri 加载声音(例如 gdrive)。并且有playOnce方法,文件播放后所有资源将被卸载。
我也在我的应用程序中使用它,而不是 SoundPool 和 MediaPlayer。
implementation 'com.olekdia:sound-pool:3.0.2'
关于android - Android 中 SoundPool 的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611411/