我是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就会进入收听语音指令的模式。
我还需要什么?
发布于 2015-11-12 00:15:21
首先,我对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
我看到了在这个答案中定义的回调:How to use the new MediaSession class to receive media button presses on Android 5.x?
顺便说一下,它是在MediaSession.Callback上捕获的,而不是在BroadcastReceiver中捕获的。
https://stackoverflow.com/questions/33596223
复制相似问题