Playing sound over speakers while playing music through headphones
这家伙和我现在解决的问题完全相同。我阅读了他的所有回复,因为有些过时了,有些根本没有工作,或者大多数设备都没有,所以我决定采用快速切换可能是更好的方法。我也无法直接与他联系。
我需要在耳机上连续播放音调以便为我的外围设备供电,有时候(每秒3-4次会非常好)播放一个非常短暂但仍然可听到的“嘟嘟”声。至关重要的是耳机应尽可能短时间内中断或根本不中断。
这就是我现在正在做的事情:我有一个主要的连续AudioTrack用于电源,一个用于“嘟嘟”。它的工作方式就像我想要的那样,但是2个音轨之间的切换速度非常慢 - 我手机上的时间长达600ms,朋友的手机上的时间长达200ms。如果我想每秒播放超过2次的哔哔声,这太多了。如果我给命令计时,那么一直占用的是beepTrack.play()。
powerThread = new Thread(new Runnable() {
@Override
public void run() {
while(running) {
if (systemAudioManager.isWiredHeadsetOn()) {
powerTrack.write(powerSamples, 0, powerSamples.length);
}
}
}
});
private void playBeep() {
beepTrack = new AudioTrack(
BEEP_STREAM_TYPE,
BEEP_SAMPLE_RATE,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minBeepBufferSize,
AudioTrack.MODE_STREAM
);
beepTrack.setStereoVolume(AudioTrack.getMaxVolume() / 2, AudioTrack.getMaxVolume() / 2);
powerTrack.stop();
//Delay, otherwise my power track isn't stopped and starts sounding over speakers
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
//Main time consumer
beepTrack.play();
beepTrack.write(beepSamples, 0, beepSamples.length / 2);
beepTrack.stop();
powerTrack.play();
}