【发布时间】:2010-11-04 15:16:35
【问题描述】:
我知道 SoundPool 旨在处理类似效果的小型声音,并且我确保要按某个顺序一个一个播放的 4 个声音剪辑足够小。
我使用了 ogg 质量 0,剪辑为 35kb、14kb、21kb 和 23kb,总共 92kb 的压缩音频。我不知道如何估计未压缩的大小,但应该不会很多吧?
因此,当我按顺序播放 4 个声音时,前 9 次效果很好(9 个序列 x 4 个声音),但开始导致其中一个声音的 9 序列出现记忆问题。当我开始看到错误时,它总是序列 9。
处理这个问题的最佳方法是什么?我有几个想法:
1) 进一步压缩声音(ogg 质量 -1 和单声道而不是立体声)
2) 使用 SoundPool.load 和 SoundPool.unload 不断卸载和加载声音
3) 不时释放并重新创建 soundPool 实例
还有什么我可以做的吗?尴尬的是android api 不能处理这么小的剪辑。我想知道人们是如何制作带有大量音效的游戏的……
错误看起来像这样:
错误/AudioFlinger(35):AudioTrack size=1048640 内存不足 DEBUG/MemoryDealer(35): AudioTrack (0x25018,size=1048576)
【问题讨论】: