我想在安卓设备的音频插孔上放一个可控的直流电压。我当前的解决方案是创建一个 1 秒的数组,其中包含要输出的波形的 PCM 信息(在这种情况下是一条扁平线)。
问题在于,每一秒,都会出现输出瞬间降至零伏的故障。我相信这是在创建音频资源实例时发生的。
您可以看到音频是在其自己的线程中处理的。我将在另一个线程中更改 generatedSnd 数组。
有没有更流畅的方法来做到这一点?我有一种感觉,流媒体是最好的选择,但我无法理解它。
private class OutDACrunnable
implements Runnable {
public void run() {
while (! done) {
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat. CHANNEL_OUT_STEREO,
AudioFormat.ENCODING_PCM_16BIT, generatedSnd.length,
AudioTrack.MODE_STATIC);
audioTrack.write(generatedSnd, 0, generatedSnd.length);
if (audioManager.isWiredHeadsetOn()) { } // use this later
audioTrack.play();
// wait until playback is complete
int x = 0;
do {
if (audioTrack == null) {
x = numSamples;
} else {
x = audioTrack.getPlaybackHeadPosition();
}
} while (x < numSamples);
if (audioTrack != null) audioTrack.release();
}
}
} // OutDACrunbable
谢谢。