안녕하세요 안드로이드 초급 개발자입니다.
현재 만들고 있는 앱에서 이어폰 등의 MediaButton 을 이용해서 동작을 구현하고 있습니다.
미디어버튼 리시버를 등록하고
(AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE); 를 이용해서 이어폰 연결 유/무 상태를 체크하여
연결 시에만 리시버를 등록해서 버튼이 동작하게 했습니다.
그런데 블루투스에도 미디어 버튼이 있더군요 keycode는 좀 다르지만
그래서 블루투스에 있는 미디어버튼도 함께 사용할라 하는데요.
이어폰이 연결상태를 가져와서 이어폰이 연결됏을 때 리시버가 등록돼는 것 처럼
블루투스의 상태를 가져와서 블루투스가 페어링 또는 그냥 on 만 돼었을 때 미디어 버튼 리시버를 등록하고 싶습니다.
그런데 블루투스의 상태를 잘 못받아 오는 것 같아 질문 드립니다.
아래는 저의 코드입니다.
//이어폰 연결 상태를 받아오는 메서드.
public static boolean isConnectedHeadset(Context ctx) {
AudioManager mAudioMgr = null;
mAudioMgr = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
if (mAudioMgr.isWiredHeadsetOn())
return true;
else
return false;
}
//이어폰이 연결 됐을 때에 미디어버튼 리시버를 등록하는 부분.
if (isConnectedHeadset(hostService)) {
HeadsetPlugEventReceiver.setHeadsetPlugged(true);
registerMediaButtonEventReceiver();
}
\=\\\\\\\\\\\\\\\\제가 알고 있는 블루투스 상태 가져오는 방법입니다,.
/**
* bluetooth 전원 상태 체크
* @return true이면 power on 상태이며, false이면 power off이거나 블루투스를 지원하지 않는 경우임
*/
public static boolean isEnabledBluetooth() {
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
if (btAdapter.isEnabled())
if (btAdapter.getState() == (BluetoothAdapter.STATE_ON))
return true;
return false;
}
이런 방법으로 블루투스의 상태를 가져와서 위에 있는 리시버 등록하는 조건문에 넣어줄라고 했는데
동작을 안하는 듯 합니다..
if (isConnectedHeadset(hostService) || isEnabledBluetooth()) {
HeadsetPlugEventReceiver.setHeadsetPlugged(true);
registerMediaButtonEventReceiver();
}
이렇게 구현을 해놓았는데
블루투스 전원을 킨 후에 블루투스에 미디어버튼을 눌러도 반응이 없구요
이어폰을 꼽으면 그때서야 블루투스의 미디어버튼도 같이 반응합니다..
블루투스의 on/off 또는 연결 상태를 받아올 수 있는 방법좀 알려주시면 감사하겠습니다.