Java 类android.media.session.MediaSessionManager 实例源码
项目:sflauncher
文件:MediaListener.java
@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) {
}
}
项目:QuickLyric
文件:LyricsViewFragment.java
@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);
}
项目:PebbleDialer-Android
文件:AnswerCallAction.java
@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!");
}
}
项目:android-media-controller
文件:LaunchActivity.java
private FindMediaSessionAppsTask(MediaSessionManager mediaSessionManager,
ComponentName listenerComponent,
PackageManager packageManager,
AppListUpdatedCallback callback) {
super(callback);
mMediaSessionManager = mediaSessionManager;
mListenerComponent = listenerComponent;
mPackageManager = packageManager;
}
项目:musicwidget
文件:NotificationListener.java
@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));
}
项目:AsteroidOSSync
文件:MediaService.java
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");
}
}
项目:scroball
文件:ListenerService.java
@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);
}
项目:Noyze
文件:RemoteControlLollipop.java
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;
}
项目:AcDisplay
文件:MediaController2Lollipop.java
/**
* {@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);
}
项目:Noyze
文件:RemoteControlLollipop.java
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;
}
项目:QuickLyric
文件:MediaControllerCallback.java
@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));
}
项目:QuickLyric
文件:ScrobblerService.java
@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");
}
项目:QuickLyric
文件:ScrobblerService.java
@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;
}
}
项目:android-media-controller
文件:LaunchActivity.java
void onCreate(MediaAppListAdapter mediaAppListAdapter) {
mMediaSessionApps = mediaAppListAdapter.addSection(R.string.media_app_header_session);
mMediaSessionManager = (MediaSessionManager)
getSystemService(Context.MEDIA_SESSION_SERVICE);
}
项目:EasyAndroid
文件:Managers.java
/**
* 返回 {@link MediaSessionManager}
*/
public static MediaSessionManager getMediaSessionManager()
{
return (MediaSessionManager) get(MEDIA_SESSION_SERVICE);
}
项目:Android-App-Template
文件:ServiceUtil.java
@TargetApi(21)
public static MediaSessionManager getMediaSessionManager() {
return (MediaSessionManager) getSystemService(Context.MEDIA_SESSION_SERVICE);
}
项目:sprockets-android
文件:Managers.java
/**
* @since 4.0.0
*/
public static MediaSessionManager mediaSession(Context context) {
return (MediaSessionManager) context.getSystemService(MEDIA_SESSION_SERVICE);
}
项目:DroidIBus
文件:MusicControllerService.java
/**
* Return the media session manager from the system
* @return MediaSessionManager
*/
private MediaSessionManager getMediaSessionManager(){
return (MediaSessionManager) mContext.getSystemService(
Context.MEDIA_SESSION_SERVICE
);
}
项目:android_Skeleton
文件:SystemServices.java
@TargetApi(AndroidHelper.API_21)
public static MediaSessionManager mediaSessionManager() {
return (MediaSessionManager) get(Context.MEDIA_SESSION_SERVICE);
}
项目:android-wheels
文件:ContextUtils.java
/**
* 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));
}