마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

블루투스 상태 가져오기..

0 추천

안녕하세요 안드로이드 초급 개발자입니다.

 
현재 만들고 있는 앱에서 이어폰 등의 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 또는 연결 상태를 받아올 수 있는 방법좀 알려주시면 감사하겠습니다.
윤둥이 (4,560 포인트) 님이 2013년 8월 2일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...