這是我在Stackoverflow上的第一篇文章。 我嘗試在Android智能手機上路由音頻過去幾天,但我沒有找到正確執行此操作的功能。Android - 在智能手機和藍牙模塊之間路由音頻的功能
它用於製造藍牙嬰兒手機。
我需要在智能手機和藍牙模塊之間進行路由。藍牙模塊最初用於製造手機,汽車免提,無線揚聲器......
我與項目音頻端的A2DP和HFP(免提)配置文件進行通信。
我可以在設備之間建立「sco」連接(與音頻藍牙交換機連接使用)並從藍牙模塊獲取音頻。但是當「sco」連接正在工作時,我無法再使用智能手機上的揚聲器和麥克風。
我希望找到一種解決方案,以便在我的智能手機上使用音頻,並同時在我的藍牙模塊上使用音頻。
我在http://developer.android.com/index.html上搜索了路由音頻的功能。
AudioManager類有一些功能來路由音頻,如setRouting或setParameters,但我還有任何結果。 http://developer.android.com/reference/android/media/AudioManager.html
你可以看到我用它來得到babyphone側(藍牙模塊側)音頻下面的代碼:
boolean isRecording=true;
int buffersize = 8000;
byte[] buffer = new byte[buffersize];
//audio configuration and SCO Bluetooth connection.
AudioManager aManager = (AudioManager) getSystemService(AUDIO_SERVICE);
android.os.Process.setThreadPriority(
android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
aManager.startBluetoothSco();
aManager.setBluetoothScoOn(true);
aManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
//AudioRecord configuation for recording audio from babyphone.
AudioRecord arec = new AudioRecord(
MediaRecorder.AudioSource.VOICE_COMMUNICATION,
8000,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
//AudioTrack configuation for sending audio to smartphone speaker.
AudioTrack atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
8000,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
atrack.setPlaybackRate(8000);
//start audio recording and playing.
arec.startRecording();
atrack.play();
while(isRecording) {
arec.read(buffer, 0, buffersize);
atrack.write(buffer, 0, buffer.length);
}
arec.stop();
atrack.stop()
如果我不能音頻路由到智能手機的揚聲器,並使用了「上海合作組織」的連接同時從嬰兒手機側的麥克風取回音頻,我需要儘快知道它改變我的項目的方向。
如果可能的話,智能手機側的嬰兒電話程序需要在所有最近使用的智能手機上運行。
英語不是我的第一語言,所以有些句子可能不正確。
我願意接受任何解決方案。
運氣好嗎?我試圖將藍牙耳機的麥克風用作擴聲系統,換句話說,播放應該在插孔(輸出)上,(我猜測其他藍牙設備是不可能的)。這似乎是不可能tho – Diego