필자의 요구 사항은 사용자 선택에 따라 블루투스와 전화 스피커간에 오디오를 전환하는 것입니다.Android : 블루투스와 전화 스피커 간의 오디오 스위칭이 일치하지 않습니다.
//AudioTrack for incoming audio to play as below:
int mMaxJitter = AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
new AudioTrack(AudioManager.STREAM_VOICE_CALL,8000,
AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,
mMaxJitter, AudioTrack.MODE_STREAM);
//To register broadcast receiver for bluetooth audio routing
IntentFilter ifil = new IntentFilter();
ifil.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED);
this.registerReceiver(<receiver instance>,ifil);
//To get AudioManager service
AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//Whenever user select to route audio to Bluetooth
mAudioManager.setMode(AudioManager.MODE_IN_CALL);//tried setting with other mode also viz. MODE_NORMAL, MODE_IN_COMMUNICATION but no luck
mAudioManager.startBluetoothSco();//after this I get AudioManager.SCO_AUDIO_STATE_CONNECTED state in the receiver
mAudioManager.setBluetoothScoOn(true);
mAudioManager.setSpeakerphoneOn(false);
//Whenever user select to route audio to Phone Speaker
mAudioManager.setMode(AudioManager.MODE_NORMAL);
mAudioManager.stopBluetoothSco();//after this I get AudioManager.SCO_AUDIO_STATE_DISCONNECTED state in the receiver
mAudioManager.setBluetoothScoOn(false);
mAudioManager.setSpeakerphoneOn(true);
문제 : 아래는 코드입니다 경로 오디오에 내가 수 있어요 1.하지만 행동은 일관성이 때때로 사용자가 블루투스 경로를 선택할 경우에도 전화 스피커 경로 (블루투스가 연결되어) 2. 오디오가 전화 스피커로 라우팅되면 볼륨이 낮아집니다 (전화 볼륨을 확인하지 마십시오) 3. 오디오 라우팅을 관찰 할 수있는 유일한 시간은 선택에 따라 적절합니다. 나는 위에서 언급했다.
안드로이드 버전 : 젤리 빈은
4.3 사람이 뭔가 비슷한 동작에 직면 했습니까?
감사합니다.
나는 스피커를 들어, 내가 MODE_NORMAL''로 변경 한 것으로 나타 BT로부터 온 것이면, 그렇지 않으면'MODE_IN_COMMUNICATION' – behelit