MediaSessionManager mm = (MediaSessionManager) this.getSystemService( Context.MEDIA_SESSION_SERVICE); List<MediaController> controllers = mm.getActiveSessions( new ComponentName(this, NotificationListener.class)); Log.i(TAG, "found " + controllers.size() + " controllers");
@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; }
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<>(); } } } }
public void checkForMediaSession() { MediaSessionManager manager = (MediaSessionManager) this.mContext.getApplicationContext().getSystemService("media_session"); if (manager != null) { if (!this.mIsTestRunning) { new MediaSession(this.mContext.getApplicationContext(), "NowPlayCardListener").release(); } onActiveSessionsChanged(manager.getActiveSessions(null)); } } }
manager.addOnActiveSessionsChangedListener(mSessionsChangedListener, componentName); synchronized (this) { mActiveSessions = manager.getActiveSessions(componentName); registerSessionCallbacks();
@TargetApi(Build.VERSION_CODES.LOLLIPOP) void sendHeadsetHookLollipop() { MediaSessionManager mediaSessionManager = (MediaSessionManager) getApplicationContext().getSystemService(Context.MEDIA_SESSION_SERVICE); try { List<MediaController> mediaControllerList = mediaSessionManager.getActiveSessions (new ComponentName(getApplicationContext(), NotificationReceiverService.class)); for (MediaController m : mediaControllerList) { if ("com.android.server.telecom".equals(m.getPackageName())) { m.dispatchMediaButtonEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); log.info("HEADSETHOOK sent to telecom server"); break; } } } catch (SecurityException e) { log.error("Permission error. Access to notification not granted to the app."); } }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private boolean handleOnApi21(@ValidData @NonNull MediaControlOperationData data) { int keyCode = toKeyCode(data.choice); KeyEvent keyEvent_down = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode); KeyEvent keyEvent_up = new KeyEvent(KeyEvent.ACTION_UP, keyCode); ComponentName myNotificationListenerComponent = new ComponentName(context, MediaControlHelperNotificationListenerService.class); MediaSessionManager mediaSessionManager = ((MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE)); if (mediaSessionManager == null) { Logger.e("MediaSessionManager is null."); return false; } List<MediaController> activeSessions = mediaSessionManager.getActiveSessions(myNotificationListenerComponent); if (activeSessions.size() > 0) { MediaController mediaController = activeSessions.get(0); mediaController.dispatchMediaButtonEvent(keyEvent_down); mediaController.dispatchMediaButtonEvent(keyEvent_up); } return true; }
private void setPendingIntentAndPackage(NowPlayingCardData data, MediaSessionManager sessionManager) { data.clickIntent = null; data.playerPackage = null; List<MediaController> controllers = sessionManager.getActiveSessions(null); MediaController controller = null; for (int i = 0; i < controllers.size(); i++) { MediaController aController = (MediaController) controllers.get(i); if ((aController.getFlags() & 2) != 0) { controller = aController; break; } } if (controller != null) { data.playerPackage = controller.getPackageName(); data.clickIntent = controller.getSessionActivity(); if (data.clickIntent == null) { data.clickIntent = getPendingIntentFallback(data.playerPackage); } } }
private void setPendingIntentAndPackage(NowPlayingCardData data, MediaSessionManager sessionManager) { data.clickIntent = null; data.playerPackage = null; List<MediaController> controllers = sessionManager.getActiveSessions(null); MediaController controller = null; for (int i = 0; i < controllers.size(); i++) { MediaController aController = (MediaController) controllers.get(i); if ((aController.getFlags() & 2) != 0) { controller = aController; break; } } if (controller != null) { data.playerPackage = controller.getPackageName(); data.clickIntent = controller.getSessionActivity(); if (data.clickIntent == null) { data.clickIntent = getPendingIntentFallback(data.playerPackage); } } }