USB 헤드셋과 블루투스 헤드셋을 동시에 연결하면 마이크 데이터는 블루투스 헤드셋이 아닌 USB로만 이동합니다.

   mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

 private void openSco(){         if (!mAudioManager.isBluetoothScoAvailableOffCall()) {             Log.d(TAG, "시스템에서 블루투스 녹음을 지원하지 않습니다");             return;         }         //mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);         // 블루투스 녹음의 핵심은 SCO 연결을 시작하는 것이고, 헤드셋 마이크는 동작할 것이다         mAudioManager.stopBluetoothSco         (         ); ACTION_SCO_AUDIO_STATE_CHANGED 메시지가 전송되고 메시지 로직을 수신하여 후속 작업이 시작됩니다.         //현재 SCO가 설정되어 위의 메시지가 수신되지 않을 수도 있습니다.         //stopBluetoothSco()         registerReceiver(new BroadcastReceiver() {             @Override 전에 startBluetoothSco()를 시작할 수 있습니다.













            public void onReceive(Context context, Intent intent) {                 int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);                 if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state) {                     mAudioManager.setBluetoothScoOn(true); //Open SCO                     //vo iceRecogniton();//음성인식 시작                     unregisterReceiver(this); //놓치지 마세요                 } else {//잠시만 기다려서 SCO 시작 시도                     try {                         Thread.sleep(1000);                     } catch (InterruptedException e) {                         e.printStackTrace( );                     }











                    mAudioManager.startBluetoothSco();
                }
            }
        }, 새로운 IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED));
    }

  private void closeSco() {         if(mAudioManager.isBluetoothScoOn()){             mAudioManager.setBluetoothScoOn(false);             mAudioManager.stopBluetoothSco();         }     }





 

Supongo que te gusta

Origin blog.csdn.net/guliang28/article/details/116752398
Recomendado
Clasificación