如何在Android AudioTrack underbuffers下收到通知?

时间:2012-08-14 13:25:32

标签: android audio audiotrack

我正在试图弄清楚如果一个AudioTrack对象在underbuffers下我可以得到一个回调或什么东西,这样我就可以暂停播放直到它重新填充。我猜这对我以外的其他人有用!

我能想到的唯一方法是在每次写缓冲区后调用Systemclock.elapsedRealtime()并将其与我写入AudioTrack的毫秒数进行比较,我认为这会给我剩余的数量在缓冲区。但是测量的时间差(在对数中显示)随着时间的推移逐渐增加或减少,而不是保持不变。谁能明白为什么?

这就是我所拥有的。首先要初始化:

msWritten = SystemClock.elapsedRealtime();

然后写一个缓冲区:

track.write(samples, 0, length);

// convert stereo samples to ms
msWritten += length/88.2;

if (SystemClock.elapsedRealtime() > msWritten) {
    Log.e("UNDERRUN", String.valueOf(SystemClock.elapsedRealtime()-msWritten));
} else {
    Log.e("GOOD", String.valueOf(SystemClock.elapsedRealtime()-msWritten));
}

0 个答案:

没有答案