Android SoundPool有多糟糕?还有什么替代品?

And*_*ell 76 audio android soundpool

我在将Android SoundPool视为一种在我的通用游戏开发库中实现声音效果的机制.这看起来很理想.

但是,一点点研究表明,有所有 种类的 错误SoundPool.这些错误SoundPool仍然相关吗?

因为我正在开发一个库,任何错误都会SoundPool成为我库中的错误,我希望将我的用户与此隔离开来.

所以我的问题基本上是:我应该将什么API用于音频?

使用AudioTrack和编写我自己的混音器并非不可能.但显然最好避免这样做.是否有任何API为我提供解码?

我需要能够播放合理数量的同步音效(至少16个,比方说),并且更加开放.听起来需要以低延迟开始播放.WAV需要支持文件(MP3/Ogg不重要).音效需要支持无缝循环和动态,单独的音量调节.需要正确支持Android应用生命周期.

我听说有一个1MB的限制SoundPool,这可能是每个单独的声音效果可接受,但不适用于所有缓冲/声音.有人能告诉我确切的限制是什么吗?

最后,我需要能够以压缩格式播放背景音乐,并且CPU负载较低.我认为这MediaPlayer是理想的.它可以与其他API并行使用吗?

我知道有几个人一直在MediaPlayer用来填补SoundPool.但它是否支持我需要的功能?

我错过了其他任何音频API吗?

Spa*_*rky 15

只是为了补充一些关于这个问题的最新反馈.我已经在一个应用程序中使用SoundPool一段时间了,该应用程序具有相当大的按键声音用户群.我们的用例:

  • 必须立即播放
  • 最多3个并行声音
  • 我们充分利用setRate它的全方位[0.5f-2.0f]

我现在经历了两个主要的设备特定问题,并决定减少我的损失并切断SoundPool

  • 大量的4.4 LG设备(主要是LG G2/G3系列)因其SoundPool的实现而发生本机故障.这是在更新(最终)中修复的,但我们仍然有很多用户使用未升级的设备
  • 据其他人报道, Sony Xperia设备目前与SoundPool有各种各样的问题.就我而言,我发现,如果使用setRaterate > 1.0f该的Soundpool与抛出异常,直到您的应用程序退出(通过在这个过程中一堆电池的燃烧).

TL; DR; 我不再认为调试SoundPool的危险/麻烦是值得的

  • @Sparky那么你目前使用的是什么而不是SoundPool?`AudioTrack`只有您自己的混音器实现?还是其他任何图书馆? (2认同)
  • @Sparky 好奇的头脑想知道你用了什么......告诉我们你的秘密:-p (2认同)

Sco*_*ggs 9

坚持使用OGG文件和SoundPool就可以了.这是Android的多平台野兽的本质,无论程序员如何努力尝试,都会有硬件配置无法与所有重要程序一起使用.

如果这是一个资金充足且资金充足的项目,请将每个主要手机中的一个用于测试.它实际上比程序员花在研究和试图猜测他们的性能上的时间便宜得多.

抱歉.似乎这不是您正在寻找的答案.祝好运!