Froyo에서 Intent.ACTION_MEDIA_BUTTON을 처리하는 올바른 (새로운) 접근법을 알아 내려고하고 있습니다. 2.2 일 전까지는 BroadcastReceiver (영구적으로 또는 런타임에)를 등록해야했고 다른 응용 프로그램을 가로 채고 방송을 중단하지 않는 한 Media Button 이벤트가 도착했습니다.안드로이드 2.2에서 헤드셋과 블루투스 AVRC 전송 컨트롤을 다루기위한 가이드 라인
Froyo는 여전히 (적어도 유선 헤드셋의 경우) 해당 모델을 다소 지원하는 것처럼 보이지만 응용 프로그램 간의 "전송 포커스"를 제어하는 것으로 보이는 registerMediaButtonEventReceiver 및 unregisterMediaButtonEventReceiver 메서드도 소개합니다.
내 실험 중에는 registerMediaButtonEventReceiver를 사용하면 블루투스와 유선 헤드셋 단추를 눌러 응용 프로그램의 브로드 캐스트 수신기로 라우팅 할 수 있지만 (응용 프로그램에서 "전송 포커스"를 얻음) 오디오 라우팅이 변경된 것 같습니다 (예 : 헤드셋 연결 해제) 포커스를 기본 미디어 플레이어로 되돌려 놓습니다.
Android 2.2의 구현에 대한 논리는 무엇입니까? 운송 통제를 처리하는 올바른 방법은 무엇입니까? 오디오 라우팅의 변화를 감지하고 포커스를 다시 얻으려고합니까?
이것은 Android 플랫폼의 모든 타사 미디어 플레이어가 처리해야하는 문제이므로 누군가 (Google 엔지니어 일 가능성이 있음)가 우리가 따라야 할 지침을 제공 할 수 있기를 바랍니다. 표준 접근법을 사용하면 최종 사용자가 헤드셋 버튼 컨트롤을 예측할 수있게됩니다. 스테판
registerMediaButtonEventReceiver를 호출 할 때마다 기본 미디어 플레이어가 등록에서 앱을 가져 오는 경우를 포착하는 ACTION_AUDIO_BECOMING_NOISY 이벤트가 발생할 때마다 발견했습니다. 또한 abortBroadcast()를 호출하여 다른 응용 프로그램이 나에게이 이벤트를받지 못하게 한 다음 다시 방금 등록한 후에 미디어 버튼을 잡아 끌 필요가있었습니다. – skyhigh