public synchronized void setRemoteControlListener(Listener listener) throws RemoteException { if (Log.isLoggable("NowPlayCardListener", 3)) { Log.d("NowPlayCardListener", "setRemoteControlListener: " + listener); } MediaSessionManager manager = (MediaSessionManager) this.mContext.getApplicationContext().getSystemService("media_session"); if (listener != null) { manager.addOnActiveSessionsChangedListener(this, null); this.mNowPlayCardListener = listener; checkForMediaSession(); } else { manager.removeOnActiveSessionsChangedListener(this); this.mNowPlayCardListener = null; updateMediaSessionCallback(null); } }
@Override public boolean onCreate() { if (!hasPermission()) return false; players = new HashMap<>(); try { MediaSessionManager manager = (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE); if (null == manager) return false; manager.addOnActiveSessionsChangedListener(MprisReceiverPlugin.this, new ComponentName(context, NotificationReceiver.class), new Handler(Looper.getMainLooper())); createPlayers(manager.getActiveSessions(new ComponentName(context, NotificationReceiver.class))); sendPlayerList(); } catch (Exception e) { Log.e(TAG, "Exception", e); } return true; }
manager.addOnActiveSessionsChangedListener(mSessionsChangedListener, componentName); synchronized (this) { mActiveSessions = manager.getActiveSessions(componentName);