Android 按下耳机按钮时如何暂停MediaPlayer?

Android 按下耳机按钮时如何暂停MediaPlayer?,android,media-player,headphones,Android,Media Player,Headphones,我正在实现媒体播放器并尝试暂停/启动播放器。但当我启动ear phone按钮时,广播接收器会重复调用。我使用以下代码。有人能帮我吗 编辑: public class MediaButtonIntentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String intentAction = intent.ge

我正在实现媒体播放器并尝试暂停/启动播放器。但当我启动ear phone按钮时,广播接收器会重复调用。我使用以下代码。有人能帮我吗

编辑:

public class MediaButtonIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            return;
        }
        KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            return;
        }
        int action = event.getAction();
        if (action == KeyEvent.ACTION_DOWN) {

            if(AudioPlayer.player!=null)
            {
                if(AudioPlayer.player.isPlaying())
                    AudioPlayer.player.pause();
                else
                    AudioPlayer.player.start();

            }
        }
        abortBroadcast();
    }
}
我已经像这样初始化了接收器。我的代码有什么错误吗

MediaButtonIntentReceiver    mMediaButtonReceiver = new MediaButtonIntentReceiver();
                IntentFilter mediaFilter = new IntentFilter(
                        Intent.ACTION_MEDIA_BUTTON);
                mediaFilter.setPriority(100000);


                registerReceiver(mMediaButtonReceiver, mediaFilter);
我的广播接收器:

public class MediaButtonIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            return;
        }
        KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            return;
        }
        int action = event.getAction();
        if (action == KeyEvent.ACTION_DOWN) {

            if(AudioPlayer.player!=null)
            {
                if(AudioPlayer.player.isPlaying())
                    AudioPlayer.player.pause();
                else
                    AudioPlayer.player.start();

            }
        }
        abortBroadcast();
    }
}

您在舱单中注册广播接收器

然后,您可以使用以下方式注册广播接收器:

音频管理器#注册器


注册DiaButtoneVentReceiver的参数是指向广播接收器的组件名称。

请说明您为什么放弃对此的投票。我必须改进我的问题以获得更好的答案。您所说的重复呼叫是什么意思?您的代码是否与链接到的示例中显示的代码完全相同?你记得过滤意图吗?