3
我正在從藍牙耳機的麥克風錄製現場音頻並將其播放到手機的揚聲器上。將數據寫入Android音頻插孔
流代碼:
int bufferSize = AudioRecord.getMinBufferSize(samplingRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
arec = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, samplingRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
//STREAM_MUSIC - no sound
//STREAM_ALARM - beep from phone's speaker
//STREAM_RING - no sound
//STREAM_NOTIFICATION - no sound
//STREAM_SYSTEM - no sound
//STREAM_VOICE_CALL - plays back on bt headset
//STREAM_DTMF - sound from loud speaker, not very clear but works for now
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, samplingRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);
atrack.setPlaybackRate(samplingRate);
byte[] buffer = new byte[bufferSize];
arec.startRecording();
atrack.play();
while(isRecording) {
arec.read(buffer, 0, bufferSize);
atrack.write(buffer, 0, buffer.length);
}
的藍牙耳機麥克風代碼配置:
audioManager.setBluetoothScoOn(true);
audioManager.startBluetoothSco();
//works for MODE_IN_COMMUNICATION - however there's a lot of echo when on speaker phone
//works fine for MODE_IN_CALL
audioManager.setMode(AudioManager.MODE_IN_CALL);
//turning speakerphone on causes a lot of disturbance
//audioManager.setSpeakerphoneOn(true);
//samplingRate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_VOICE_CALL);
samplingRate = 16000;
但是,即使我有setSpeakerphoneOn(false)
並插入耳機插入音頻插孔,音頻從打手機本身,而不是耳機。我如何克服這一點?打開揚聲器會產生很多噪音。
我使用的採樣率爲16000,因爲它可以在沒有耳機的情況下被聽到。當我使用本機採樣率時,我顯然聽到真正的高頻噪聲。我怎樣才能讓這個聲音在耳機上播放,而不是在手機的揚聲器上播放?
路由功能選擇一個音頻設備,而不是多個。這就是爲什麼我想知道是否可以直接在音頻插孔上寫Bytedata。不管怎麼說,還是要謝謝你。 –