【发布时间】:2011-09-22 23:55:35
【问题描述】:
我将 Android 的 SoundPool 视为一种在我的通用游戏开发库中实现音效的机制。它似乎很理想。
但是一点点研究表明SoundPool 中有allkindsofbugs。 SoundPool 中的错误是否仍然相关?
因为我正在开发一个库,SoundPool 中的任何错误都会成为我库中的错误,我希望我的用户不会受到影响。
所以我的问题基本上是:我应该为音频使用什么 API?
使用AudioTrack 并编写我自己的混音器并非不可能。但显然最好避免这样做。是否有任何 API 可以为我提供解码?
我需要能够同时播放合理数量的音效(至少 16 个,比如说),并且有更多的开放性。声音需要以低延迟开始播放。需要支持WAV 文件(MP3/Ogg 不重要)。音效需要支持无缝循环和动态的、单独的音量调节。 Android 应用生命周期需要得到适当的支持。
我听说SoundPool 在某处有 1MB 的限制,这对于每个单独的声音效果可能是可以接受的,但不是所有的缓冲区/声音都可以接受。谁能告诉我确切的限制是多少?
最后,我还需要能够以低 CPU 负载播放压缩格式的背景音乐。我认为MediaPlayer 是理想的选择。是否可以与其他 API 并行使用?
我知道有些人一直在使用MediaPlayer 填写SoundPool。但它是否支持我需要的功能?
还有其他我错过的音频 API 吗?
【问题讨论】:
-
我查看了您链接到的错误,但似乎没有一个是灾难性的。也许我遗漏了一些东西,但我会说只是使用它,当你发现错误时报告它们。感谢你做功课!
-
@slf 我应该指出,这些只是随机的例子——互联网上有关于崩溃错误(应用程序和设备)和无音频错误的报告。其中有 很多 - 但我不知道是因为
SoundPool有问题还是人们没有正确使用它或其他原因。有几个地方表明一些最严重的错误是特定于设备的。我可以忽略一两个旧设备吗?还是他们的许多设备需要许多不同的解决方法? (我没有资源支持。) -
@AndrewRussell 这是怎么回事? SoundPool 不处理 90K 的 ogg 文件,提供经典的 1M 日志输出 - 完全愚蠢。我和你有同样的要求。任何提示将不胜感激。
-
我的应用程序在三星 Galaxy S2 上播放声音时出现问题,我四处搜索发现 SoundPool 类是罪魁祸首,请查看更多cocos2d-x.org/boards/10/topics/7980,显然 soundpool 类在双声道播放声音时出现问题核心手机。所以最好避免它......
-
@AndrewRussell 请问你最后做了什么?我在图书馆玩了一段时间,到目前为止它运行得不是很好