代码之家  ›  专栏  ›  技术社区  ›  mishkin

关于SoundPool的内存问题

  •  5
  • mishkin  · 技术社区  · 15 年前

    我使用了ogg质量0,剪辑为35kb、14kb、21kb和23kb,共92kb的压缩音频。我不知道如何估计未压缩的大小,但应该不是很多,对吧?

    最好的办法是什么?我有几个想法:

    2) 使用SoundPool.load和SoundPool.unload不断卸载和加载声音

    3) 一次又一次地释放和重新创建soundPool实例

    错误看起来是这样的:

    错误/AudioFlinger(35):没有足够的内存用于AudioTrack size=1048640 调试/内存分配器(35):音频跟踪(0x25018,大小=1048576)

    2 回复  |  直到 15 年前
        1
  •  2
  •   mishkin    15 年前

    在以下情况下,我似乎能够解决我的问题:

    1) 把我的声音剪辑从44降到22千赫。未压缩的大小被切成两半(我想如何估计未压缩的声音大小-导出您的剪辑到未压缩的wav)。我使用了很好的开源工具Audacity

    2) 更多地修剪声音以减少持续时间

        2
  •  0
  •   Dave MacLean    15 年前

    这似乎很奇怪。SoundPool应该在加载音频片段时将其扩展到内存中,一旦加载,我就不会期望您以后遇到内存问题。当我遇到内存问题时,它就在开始,而不是以后。你确定以后不会加载更多声音?

    为了回答你的另一个问题,有些游戏使用的是JET播放器和MIDI声音,而不是声音池。Android SDK中的JetBoy示例程序是如何在应用程序中进行此类声音工作的一个很好的例子。