【发布时间】:2012-08-11 11:19:45
【问题描述】:
我正在为 android 2.2 编程并尝试使用 SoundPool 类同时播放多个声音,但在随机的时间声音会停止从扬声器中发出。
对于每个将要播放的声音,这都会打印在 logcat 中:
AudioFlinger could not create track. status: -12
Error creating AudioTrack
Audio track delete
没有抛出异常,程序继续执行,除了体积不足之外没有任何变化。我很难追踪导致错误的条件或在错误发生后重新创建它。我在任何地方都找不到文档中的错误,并且几乎不知所措。
任何帮助将不胜感激!
编辑:我忘了说我正在加载 mp3 文件,而不是 ogg。
【问题讨论】:
-
您要创建多少首曲目? AFAIK -12 是
NO_MEMORY,这可能意味着您已经用完了轨道(我认为开放轨道的最大数量曾经是 32 - 不确定是否仍然如此)。 -
嗯,我正在加载很多曲目,但它们被分成 5 个音池。每个音池最多可以加载约 15 个声音。你知道 32 条最大音轨是系统范围的还是每个声音池的?
-
它是每个混音器线程(其中每个输出线程 AFAIK 都有一个)。但由于许多平台对所有非 A2DP 播放都使用单个输出线程,因此它基本上成为了一个全局限制。
-
当我调用 stop 但未能在我的轨道上调用 release 时,我得到了这个。