@Override public void onCreate(){ registerReceiver(button,new IntentFilter(MEDIA_ACTION)); mediaSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE); try { mediaSessionManager.addOnActiveSessionsChangedListener(sessionListener, componentName); List<MediaController> controllers = mediaSessionManager.getActiveSessions(componentName); mediaController = pickController(controllers); if (mediaController != null) { mediaController.registerCallback(callback); meta = mediaController.getMetadata(); updateMetadata(); } online = true; } catch (SecurityException e) { } }
@Override public void onDestroy() { unregisterUpdateBroadcastReceiver(); threadCancelled = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && networkCallback != null) try { ((ConnectivityManager) getActivity().getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE)).unregisterNetworkCallback(networkCallback); } catch (IllegalArgumentException ignored) { } if (Build.VERSION.SDK_INT >= 21 && sessionListener != null) { ((MediaSessionManager) getActivity().getSystemService(Context.MEDIA_SESSION_SERVICE)) .removeOnActiveSessionsChangedListener((OnActiveSessionsChangedListener) sessionListener); } super.onDestroy(); RefWatcher refWatcher = App.getRefWatcher(getActivity()); refWatcher.watch(this); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private void answerUsingMediaServer() { Timber.d("Answering using media server method..."); MediaSessionManager mediaSessionManager = (MediaSessionManager) getCallModule().getService().getSystemService(Context.MEDIA_SESSION_SERVICE); try { List<MediaController> mediaControllerList = mediaSessionManager.getActiveSessions (new ComponentName(getCallModule().getService(), JellybeanNotificationListener.class)); for (MediaController m : mediaControllerList) { if ("com.android.server.telecom".equals(m.getPackageName())) { Timber.d("Found telephony media controller!"); m.dispatchMediaButtonEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); break; } } } catch (SecurityException e) { Timber.e("Notification service not running!"); } }
private FindMediaSessionAppsTask(MediaSessionManager mediaSessionManager, ComponentName listenerComponent, PackageManager packageManager, AppListUpdatedCallback callback) { super(callback); mMediaSessionManager = mediaSessionManager; mListenerComponent = listenerComponent; mPackageManager = packageManager; }
@Override public void onCreate(){ registerReceiver(button,new IntentFilter(StandardWidget.WIDGET_ACTION)); mediaSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE); mediaSessionManager.addOnActiveSessionsChangedListener(sessionListener, componentName); List<MediaController> controllers = mediaSessionManager.getActiveSessions(componentName); mediaController = pickController(controllers); if(mediaController!=null) { mediaController.registerCallback(callback); meta = mediaController.getMetadata(); updateMetadata(); } online = true; sendBroadcast(new Intent(StandardWidget.WIDGET_UPDATE)); }
public void sync() { mDevice.enableNotify(mediaCommandsCharac, commandsListener); try { mMediaSessionManager = (MediaSessionManager) mCtx.getSystemService(Context.MEDIA_SESSION_SERVICE); List<MediaController> controllers = mMediaSessionManager.getActiveSessions(new ComponentName(mCtx, NLService.class)); onActiveSessionsChanged(controllers); mMediaSessionManager.addOnActiveSessionsChangedListener(this, new ComponentName(mCtx, NLService.class)); } catch (SecurityException e) { Log.w("MediaService", "No Notification Access"); } }
@Override public void onCreate() { ScroballApplication application = (ScroballApplication) getApplication(); sharedPreferences = application.getSharedPreferences(); ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); ScroballDB scroballDB = application.getScroballDB(); ScrobbleNotificationManager scrobbleNotificationManager = new ScrobbleNotificationManager(this, sharedPreferences); LastfmClient lastfmClient = application.getLastfmClient(); Scrobbler scrobbler = new Scrobbler(lastfmClient, scrobbleNotificationManager, scroballDB, connectivityManager); playbackTracker = new PlaybackTracker(scrobbleNotificationManager, scrobbler); Log.d(TAG, "NotificationListenerService started"); MediaSessionManager mediaSessionManager = (MediaSessionManager) getApplicationContext().getSystemService(Context.MEDIA_SESSION_SERVICE); ComponentName componentName = new ComponentName(this, this.getClass()); mediaSessionManager.addOnActiveSessionsChangedListener(this, componentName); NetworkStateReceiver networkStateReceiver = new NetworkStateReceiver(scrobbler); IntentFilter filter = new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION); this.registerReceiver(networkStateReceiver, filter); // Trigger change event with existing set of sessions. List<MediaController> initialSessions = mediaSessionManager.getActiveSessions(componentName); onActiveSessionsChanged(initialSessions); sharedPreferences.registerOnSharedPreferenceChangeListener(this); }
protected RemoteControlLollipop(Context context, Class<? extends NotificationListenerService> clazz) { super(context); mControllerService = new ComponentName(context, clazz); mControllers = new ConcurrentHashMap<>(); mMediaSessionManager = (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE); mMediaSessionManager.addOnActiveSessionsChangedListener(this, mControllerService); mRegistered = true; }
/** * {@inheritDoc} */ @Override public void onStart(Object... objects) { super.onStart(); // Init a new thread. mThread = new T(this); mThread.setPriority(Thread.MIN_PRIORITY); mThread.start(); // Media session manager leaks/holds the context for too long. // Don't let it to leak the activity, better lak the whole app. final Context context = mContext.getApplicationContext(); mMediaSessionManager = (MediaSessionManager) context .getSystemService(Context.MEDIA_SESSION_SERVICE); try { mMediaSessionManager.addOnActiveSessionsChangedListener(mSessionListener, mComponent); mSessionListener.setMediaController(this); mSessionListening = true; } catch (SecurityException exception) { Log.w(TAG, "Failed to start Lollipop media controller: " + exception.getMessage()); // Try to unregister it, just it case. try { mMediaSessionManager.removeOnActiveSessionsChangedListener(mSessionListener); } catch (Exception e) { /* unused */ } finally { mMediaSessionManager = null; mSessionListening = false; } // Media controller needs notification listener service // permissions to be granted. return; } List<MediaController> controllers = mMediaSessionManager.getActiveSessions(mComponent); mSessionListener.onActiveSessionsChanged(controllers); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public static void registerFallbackControllerCallback(Context context, MediaControllerCallback controllerCallback) { MediaSessionManager mediaSessionManager = ((MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE)); ComponentName className = new ComponentName(context.getApplicationContext(), NotificationListenerService.class); if (sessionListener != null) mediaSessionManager.removeOnActiveSessionsChangedListener(sessionListener); sessionListener = list -> controllerCallback.registerActiveSessionCallback(context, list); mediaSessionManager.addOnActiveSessionsChangedListener(sessionListener, className); controllerCallback.registerActiveSessionCallback(context, mediaSessionManager.getActiveSessions(className)); }
@Override public void onCreate() { super.onCreate(); sRunning = true; try { mediaControllerCallback = new MediaControllerCallback(this); MediaSessionManager.OnActiveSessionsChangedListener sessionsChangedListener = list -> mediaControllerCallback.registerActiveSessionCallback(ScrobblerService.this, list); listener = new WeakReference<>(sessionsChangedListener); MediaSessionManager manager = ((MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE)); ComponentName className = new ComponentName(getApplicationContext(), NotificationListenerService.class); manager.addOnActiveSessionsChangedListener(sessionsChangedListener, className); List<MediaController> controllers = manager.getActiveSessions(className); mediaControllerCallback.registerActiveSessionCallback(ScrobblerService.this, controllers); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { SharedPreferences current = getSharedPreferences("current_music", Context.MODE_PRIVATE); String artist = current.getString("artist", ""); String track = current.getString("track", ""); startForeground(NOTIFICATION_ID, NotificationUtil.makeNotification(this, artist, track, 0L, false, false)); } if (!controllers.isEmpty()) mediaControllerCallback.broadcastControllerState(this, controllers.get(0), null); } catch (Exception e) { e.printStackTrace(); return; } Log.d("geecko", "mediaControllerCallback registered"); }
@Override public void onDestroy() { super.onDestroy(); sRunning = false; this.mBinder = null; if (listener != null && listener.get() != null) ((MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE)).removeOnActiveSessionsChangedListener(listener.get()); if (mediaControllerCallback != null) { mediaControllerCallback.removeControllerCallback(); mediaControllerCallback = null; } }
void onCreate(MediaAppListAdapter mediaAppListAdapter) { mMediaSessionApps = mediaAppListAdapter.addSection(R.string.media_app_header_session); mMediaSessionManager = (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE); }
/** * 返回 {@link MediaSessionManager} */ public static MediaSessionManager getMediaSessionManager() { return (MediaSessionManager) get(MEDIA_SESSION_SERVICE); }
@TargetApi(21) public static MediaSessionManager getMediaSessionManager() { return (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE); }
/** * @since 4.0.0 */ public static MediaSessionManager mediaSession(Context context) { return (MediaSessionManager) context.getSystemService(MEDIA_SESSION_SERVICE); }
/** * Return the media session manager from the system * @return MediaSessionManager */ private MediaSessionManager getMediaSessionManager(){ return (MediaSessionManager) mContext.getSystemService( Context.MEDIA_SESSION_SERVICE ); }
@TargetApi(AndroidHelper.API_21) public static MediaSessionManager mediaSessionManager() { return (MediaSessionManager) get(Context.MEDIA_SESSION_SERVICE); }
/** * Obtain a {@link MediaSessionManager} instance associated with specified {@link Context} * * @param context Context * @return {@link MediaSessionManager} associated with specified {@link Context} * @throws InvalidContextException if {@link MediaSessionManager} can't be obtained * from specified {@link Context} */ @NonNull @RequiresApi(Build.VERSION_CODES.LOLLIPOP) public static MediaSessionManager getMediaSessionManager(@NonNull Context context) { return validate(context.getSystemService(Context.MEDIA_SESSION_SERVICE)); }