2013-08-27 54 views
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,因爲它可以在沒有耳機的情況下被聽到。當我使用本機採樣率時,我顯然聽到真正的高頻噪聲。我怎樣才能讓這個聲音在耳機上播放,而不是在手機的揚聲器上播放?

回答

1

不幸的是,由於顯式路由的棄用,沒有支持藍牙和揚聲器設置的組合,這將使您可以使用藍牙耳機的麥克風,但可以使用手機的揚聲器(聽筒/耳機或免提電話)。鑑於許多可能的無意義組合,我懷疑這是轉向更簡單的API的基本原理。

您可以嘗試調用不推薦使用的setRouting()函數,但這可能會產生意想不到的副作用和/或甚至無法工作,具體取決於硬件的功能以及底層子系統/驅動程序中正確管理的情況。

+0

路由功能選擇一個音頻設備,而不是多個。這就是爲什麼我想知道是否可以直接在音頻插孔上寫Bytedata。不管怎麼說,還是要謝謝你。 –

相關問題