我想将可控的直流电压输出到android设备的音频插孔中。我当前的解决方案是创建一个1秒的数组,其中包含要输出的波形的PCM信息(在这种情况下为平线)。
问题在于,每隔一秒就会出现一个小故障,使输出瞬间下降到零伏。我相信这是在创建音频资源实例时发生的。
您可以看到音频是在其自己的线程中处理的。我将在另一个线程中更改generateSnd数组。
有更流畅的方法吗?我觉得流媒体是一路走,但我无法理解。
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
谢谢。
最佳答案
不幸的是,您无法从音频插孔输出DC。音频I / O设计为传递变化的信号,通常说来高于20 Hz。如果尝试输出直流电,您会得到类似脉冲的声音,这听起来像您正在得到的。
关于java - Java Android DC音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950739/