2

내 앱에서 블루투스 헤드셋의 탭 이벤트를 잡아야합니다. 그것은 MEDIA_BUTTONS입니다. 브로드 캐스트 수신기를 사용합니다. 그리고 정상적으로 작동하지만, 백그라운드에서 음악 앱을 실행하면 음악 앱이 해당 이벤트를 도용하고 onReceive 메소드가 더 이상 호출되지 않습니다.음악 앱을 재생할 때 Android MEDIA_BUTTON 이벤트가 수신되지 않습니다.

내가 할 것은 :

<receiver android:name=".PlantronicsReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
     </intent-filter> 
    </receiver> 

2) 활동에 수신기를 등록

mAudioManager.registerMediaButtonEventReceiver(new ComponentName(this, PlantronicsReceiver.class)); 

당신이 내가 미디어를 수신 할 수있는 방법 어떤 생각을 가지고 있습니까 : 1) 내가 매니페스트에 수신기를 등록 음악 앱 (예 : Google Play)을 사용하여 버튼 이벤트를 열 수 있습니까?

감사합니다.

답변

2

확인이 링크 : http://developer.android.com/training/managing-audio/audio-focus.html

먼저 당신 만이 MEDIA_BUTTON 이벤트를 잡을 수, 오디오 포커스를 취득해야합니다. 나는 똑같은 문제가 있었고, 위의 것은 나를 위해 일했다. 그 안에 원하는 무엇이든

IntentFilter musicPauseFilter = new IntentFilter(
        "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION"); 
IntentFilter musicPlayFilter = new IntentFilter(
        "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"); 

registerReceiver(musicPlay, musicPlayFilter); 
registerReceiver(musicPause, musicPauseFilter); 

그럼 당신은 단순히 이러한 수신기를 정의하고 수행 : 내가 코멘트에서 언급 한 의도 행동의 사용에 관한

, 당신은 다음을 확인할 수 있습니다

// Broadcast Receiver for Music play. 
    private BroadcastReceiver musicPlay = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      Log.v("gaurav", "Music play started"); 
      } 
    }; 

    // Broadcast Receiver for Music pause. 
    private BroadcastReceiver musicPause = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      Log.v("gaurav", "Music paused"); 
      } 
    }; 

희망이 당신을 돕는다.

+0

예, 실제로 작동했습니다. 고맙습니다. 하지만 같은 media_button click으로 음악을 재생하고 (일시 정지/재생하는 등) 음악을 관리하는 방법이 있습니까? –

+0

다음 작업을 사용합니다 : "android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION"and "android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION". 이 방법이 효과가 있는지 확인하십시오. 나는 Samsung Galaxy Note 2에서만 테스트를 마쳤습니다. –

+0

어떻게 사용했는지 약간의 예를 보여 주시겠습니까? 고맙습니다! –