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(); } }