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); } }
/** * Disables RemoteController. */ public void setRemoteControllerDisabled() { Log.d(TAG, "setRemoteControllerDisabled"); if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { Object service = TomahawkApp.getContext().getSystemService(Context.AUDIO_SERVICE); if (service instanceof AudioManager && ((AudioManager) service).registerRemoteController(mRemoteController)) { ((AudioManager) service).unregisterRemoteController(mRemoteController); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Object service = TomahawkApp.getContext().getSystemService(Context.MEDIA_SESSION_SERVICE); if (service instanceof MediaSessionManager) { MediaSessionManager manager = (MediaSessionManager) service; if (mSessionsChangedListener != null) { manager.removeOnActiveSessionsChangedListener(mSessionsChangedListener); } synchronized (this) { unregisterSessionCallbacks(); mActiveSessions = new ArrayList<>(); } } } }