用AudioTrack随机关闭Android的声音(卡?)

时间:2015-11-07 23:21:43

标签: android audio

我正在使用AudioTrack播放一些我混音的声音。真的很短的声音,比如长度为1秒,每隔一秒,比如3秒。

创建AudioTrack

的标准方式
AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
  AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT,
  4410 * 2 * 2 /* 100 ms stereo */, AudioTrack.MODE_STREAM);

玩:

at.play()
at.write(mix, 0, mix.size)
at.stop()

大部分时间这完美无瑕。但是,有时 - 特别是插入耳机/外置扬声器时 - 声卡关闭。我可以注意到确切的时刻,因为通常情况下,当没有播放任何声音并且声音打开时,会出现一些非常安静的白噪声。

声音关闭,白噪声完全消失,根本没有播放下一些声音。经过大约2-3次尝试后,声卡恢复了生机。

此外,有时声音口吃的第一毫秒会重复。好像卡片在回来时太慢了?

造成这种奇怪行为的原因是什么?我怎么能绕过它呢?我绝不会附加到AudioTrack,如果有更好的选择,那就让我玩short的数组,然后我就全都听了。

编辑:这些可能是相关的:

0 个答案:

没有答案