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

标签 android

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'

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

关于android - Android 中 SoundPool 的大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611411/

相关文章:

android - App Inventor 与 Android SDK

android - 安装错误: INSTALL_FAILED_MEDIA_UNAVAILABLE?

android - 亚马逊GameCircle集成

android - 如何在没有 bitmap.compress 方法的情况下将位图写入文件

java - android onSavedInstanceState保存和恢复时间

android - 使用命令行导出已签名的应用程序包

android - 移动 webkit 中的字体大小意外增加

java - Android 中奇怪的内存问题

android - 如何设置MapView的高度和宽度?

java - 如何在不使用 addValueEventListener 的情况下访问 Firebase 数据