private Boolean bluetoothCheck(){ boolean chkFlag = false; //블루투스를 지원하는 기기이며, 현재 블루투스가 켜져있는가? if(mBluetoothService.deviceSupport() && mBluetoothService.connectState()) { // API 레벨이 23 미만인 경우(isBluetoothA2dpOn 메소드 사용) // isBluetoothA2dpOn : 현재 블루투스 오디오 기능이 연결된 기기가 있는가? if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { if (mAudioManager.isBluetoothA2dpOn()) { chkFlag = true; } // API 레벨이 23 이상인 경우(getDevices 메소드 사용) // getDevices : 현재 연결된 오디오 기기 목록을 가져오는 메소드 } else { devices = mAudioManager.getDevices(AudioManager.GET_DEVICES_ALL); // 기기 목록 중, 블루투스에 연결된 오디오 기기가 있는가? for (AudioDeviceInfo device : devices) { if (device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP) { chkFlag = true; } } } } return chkFlag; }
mBluetoothService 관련 내용은 여기에서 확인할 수 있다.
2019. 01. 09 수정 사항
리팩토링하려고 관련 자료를 찾다보니 BluetoothHeadset과 BluetoothAdapter의 getProfileConnectionState 메소드 중 하나를 선택하면 코드가 훨씬 깔끔해지고 블루투스 헤드셋 체크가 더 정확해진다.
BluetoothAdapter의 getProfileConnectionState
//HEADSET = 오디오와 통화가 가능한 헤드셋 //A2DP = 오디오만 가능한 헤드셋 if(mBluetoothAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) == BluetoothProfile.STATE_CONNECTED || mBluetoothAdapter.getProfileConnectionState(BluetoothProfile.A2DP) == BluetoothProfile.STATE_CONNECTED){ return true; } return false;
BluetoothHeadset과 브로드캐스트 리시버를 이용한 실시간 헤드셋 체크
//ACTION_AUDIO_STATE_CHANGED : 오디오 상태 변경 감지(A2DP) //ACTION_VENDOR_SPECIFIC_HEADSET_EVENT : 해당 헤드셋의 특정 이벤트(업체별 상태 변화) private BroadcastReceiver mBluetoothHeadsetBroadCastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action != null){ if(action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED) || action.equals(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)){ //연결이 확인되면 수행할 로직 } } } };
'Before 2022 > Android' 카테고리의 다른 글
안드로이드 KeyStore 비대칭(공개키, RSA) 암호화 (0) | 2018.12.28 |
---|---|
유선 헤드셋(유선 이어폰)이 연결되어 있는지 체크 (0) | 2018.12.12 |
안드로이드 뒤로가기(Back) 버튼 두번 눌러 앱 종료 (0) | 2018.12.12 |
안드로이드 소프트 키 제어 (0) | 2018.12.12 |
안드로이드 현재 단말기가 더블 유심일 경우 전화번호를 가져오는 메소드 (0) | 2018.12.10 |