Android MediaSession没有对耳机做出反应

时间:2015-11-08 16:32:41

标签: android android-mediasession

我对Android很新,我正在创建一个音乐播放器。 我对MediaSession并不熟悉,现在我有一个功能正常的音乐播放器,但它不支持对耳机点击作出反应或暂停接听电话。

这是我的代码:

    ComponentName mediaButtonReceiver = new ComponentName(context, MusicPlayerNotificationReceiver.class);
    final MediaSessionCompat mediaSession = new MediaSessionCompat(context, "Start MP", mediaButtonReceiver, null);
    mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
    LockerActivity.getInstance().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            mediaSession.setCallback(MusicPlayer.this);
        }
    });
    mediaSession.setActive(true);

我还有一个BroadcastReceiver,用这个动作定义

<action android:name="android.intent.action.MEDIA_BUTTON" />

这是我的所有代码都与MediaSession相关。 所以,就目前而言,我只是试图通过耳机获得通知。我在onReceive()内的第一行有一个断点,我点击耳机中的按钮,没有任何反应。如果我长按这个按钮,那么android就会进入聆听模式说话。

我还需要什么?

1 个答案:

答案 0 :(得分:0)

首先,我已经对MediaSession的所有调用都在ui线程上运行,然后我从谷歌培训中添加了这段代码:

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...

// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...

// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);

http://developer.android.com/training/managing-audio/volume-playback.html#PlaybackControls

我看到了这个SO答案中定义的回调: How to use the new MediaSession class to receive media button presses on Android 5.x?

BTW,它位于MediaSession.Callback而不是BroadcastReceiver