2017-01-31 14 views
1

따라서 ACTION_HEADSET_PLUG 및 실제로 processing the plug in/out events에 대한 브로드 캐스트 리시버 등록 기술은 이미 잘 알고 있습니다.OnCreate()에서 ACTION_HEADSET_PLUG을 얻는 방법

그러나 ... 내 앱은 헤드셋이 연결되어 있는지 여부를 알기 위해 onCreate()에서 일찍 알 필요가 있습니다 (그렇지 않은 경우 헤드셋 전용 앱이므로 대화 상자를 표시하고 종료해야합니다. 스피커와 함께 사용하지 마십시오).

그러나 어디에서나 내가 수신기를 등록하면 onStart() 또는 onResume() 중 하나를 수행해야합니다. 수신기에서 설정 한 플래그를 onCreate()에 보낼 기회가 없습니다.

어떻게 해결할 수 있습니까?

헤드셋 잭을 폴링 할 방법이 있습니까?

답변

1

당신은 헤드셋이 연결되어 있는지 결정하기 위해 AudioManager's isWiredHeadsetOn()을 사용할 수 있습니다하지만 그 문서에 따라 :

이 유효한 표시가 오디오 라우팅 따라 오디오 재생이 유선 헤드셋을 통해 실제로이지 않는다 다른 조건에서.

는 또한 현재 사용 무엇의 더 나은 아이디어를 얻을 isSpeakerphoneOn(), isBluetoothA2dpOn()isBluetoothScoOn()의 값을보고 싶을 것이다.

+0

감사합니다. 'isWiredHeadsetOn()'의 문제에 대해 읽었습니다. 그래서 ACTION_HEADSET_PLUG로 장난 꾸러기입니다. 어떤 이유인지 AudioManager의'isSpeakerphoneOn()'과 당신이 언급 한 다른 메소드들을 놓쳤다. 그래서 고맙다. 실제로 유선 헤드셋이 연결되어 있는지 또는 Bluetooth 헤드셋이 연결되어 있는지 여부는 중요하지 않습니다. 오디오가 스피커에 도달하지 않는 한, onCreate()가 진행되어야합니다. – WebViewer