小编use*_*813的帖子

Android - 用于在智能手机和蓝牙模块之间路由音频的功能

这是我在Stackoverflow上的第一篇文章.我尝试在过去几天在Android智能手机上路由音频,但我找不到正确的功能.

它用于制作蓝牙Babyphone.

我需要在智能手机和蓝牙模块之间进行路由.蓝牙模块最初用于制作手机,汽车免提,无线扬声器......

我与项目的音频端的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. …
Run Code Online (Sandbox Code Playgroud)

audio routing android bluetooth

5
推荐指数
1
解决办法
7340
查看次数

标签 统计

android ×1

audio ×1

bluetooth ×1

routing ×1