我对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就会进入聆听模式说话。
我还需要什么?
答案 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
。