I know this is an old question, I ran into this problem and found that we should register registerMediaButtonEventReceiver (..) only after we hold AudioManager.AUDIOFOCUS_GAIN, otherwise it does not work.
I tried with the same Manifest and BroadcastReciever written by @Ton
private class ClassOnAudioFocusChangeListener implements AudioManager.OnAudioFocusChangeListener { @Override public void onAudioFocusChange(int focusChange) { if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){ Log.e("ClassOnAudioFocusChangeListener: ", "AUDIOFOCUS_LOSS_TRANSIENT"); } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { Log.e("ClassOnAudioFocusChangeListener: ", "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"); } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { Log.e("ClassOnAudioFocusChangeListener: ", "AUDIOFOCUS_GAIN"); mAudioManager.registerMediaButtonEventReceiver(mMediaButtonEventComponenName); } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { Log.e("ClassOnAudioFocusChangeListener: ", "AUDIOFOCUS_LOSS"); } } };
Here is the same manifest.
<receiver android:name="MainActivity$MediaButtonEventReceiver"> <intent-filter android:priority="1000" > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver>
mifthi
source share