0

我对 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 进入聆听模式以获取语音指令。

我还需要什么?

4

1 回答 1

0

首先,我已经调用了MediaSession在 ui 线程上运行的所有调用,然后我从 google 培训中添加了以下代码:

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?

顺便说一句,它是在 中MediaSession.Callback而不是在BroadcastReceiver.

于 2015-11-11T16:15:21.073 回答