Java 类android.media.session.MediaController 实例源码

项目: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) {

    }
}
项目:sflauncher    文件:MediaListener.java   
@Override
public int onStartCommand(Intent i, int startId, int i2){
    if(mediaController==null){
        try {
            List<MediaController> controllers = mediaSessionManager.getActiveSessions(componentName);
            mediaController = pickController(controllers);
            if (mediaController != null) {
                mediaController.registerCallback(callback);
                meta = mediaController.getMetadata();
                updateMetadata();
            }
        } catch (SecurityException e) {

        }
    }
    return START_STICKY;
}
项目:android-media-controller    文件:LaunchActivity.java   
static List<MediaAppEntry> getMediaAppsFromControllers(
        Collection<MediaController> controllers,
        PackageManager packageManager) {
    final List<MediaAppEntry> mediaApps = new ArrayList<>();
    for (final MediaController controller : controllers) {
        String packageName = controller.getPackageName();
        ApplicationInfo info;
        try {
            info = packageManager.getApplicationInfo(packageName, 0);
        } catch (NameNotFoundException e) {
            // This should not happen. If we get a media session for a package, then the
            // package must be installed on the device.
            Log.e(TAG, "Unable to load package details", e);
            continue;
        }
        final Drawable icon = info.loadIcon(packageManager);
        final String name = info.loadLabel(packageManager).toString();
        mediaApps.add(MediaAppEntry.fromSessionToken(
                controller.getSessionToken(), name,
                packageName,
                icon
        ));
    }
    return mediaApps;
}
项目:scroball    文件:ListenerService.java   
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
  if (key.startsWith("player.")) {
    final String packageName = key.substring(7);

    if (sharedPreferences.getBoolean(key, true)) {
      Log.d(TAG, "Player enabled, re-registering callbacks");
      onActiveSessionsChanged(mediaControllers);
    } else {
      Log.d(TAG, "Player disabled, stopping any current tracking");
      final Optional<MediaController> optionalController =
          Iterables.tryFind(
              mediaControllers, input -> input.getPackageName().equals(packageName));

      if (optionalController.isPresent()
          && controllerCallbacks.containsKey(optionalController.get())) {
        MediaController controller = optionalController.get();
        controller.unregisterCallback(controllerCallbacks.get(controller));
        playbackTracker.handleSessionTermination(controller.getPackageName());
        controllerCallbacks.remove(controller);
      }
    }
  }
}
项目:MrinalMusicPlayer    文件:MediaBrowserFragment.java   
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MediaBrowser.MediaItem item = getItem(position);
    int itemState = MediaItemViewHolder.STATE_NONE;
    if (item.isPlayable()) {
        itemState = MediaItemViewHolder.STATE_PLAYABLE;
        MediaController controller = ((Activity) getContext()).getMediaController();
        if (controller != null && controller.getMetadata() != null) {
            String currentPlaying = controller.getMetadata().getDescription().getMediaId();
            String musicId = MediaIDHelper.extractMusicIDFromMediaID(
                    item.getDescription().getMediaId());
            if (currentPlaying != null && currentPlaying.equals(musicId)) {
                PlaybackState pbState = controller.getPlaybackState();
                if (pbState == null || pbState.getState() == PlaybackState.STATE_ERROR) {
                    itemState = MediaItemViewHolder.STATE_NONE;
                } else if (pbState.getState() == PlaybackState.STATE_PLAYING) {
                    itemState = MediaItemViewHolder.STATE_PLAYING;
                } else {
                    itemState = MediaItemViewHolder.STATE_PAUSED;
                }
            }
        }
    }
    return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
        item.getDescription(), itemState);
}
项目:MrinalMusicPlayer    文件:BaseActivity.java   
/**
 * Check if the MediaSession is active and in a "playback-able" state
 * (not NONE and not STOPPED).
 *
 * @return true if the MediaSession's state requires playback controls to be visible.
 */
protected boolean shouldShowControls() {
    MediaController mediaController = getMediaController();
    if (mediaController == null ||
        mediaController.getMetadata() == null ||
        mediaController.getPlaybackState() == null) {
        return false;
    }
    switch (mediaController.getPlaybackState().getState()) {
        case PlaybackState.STATE_ERROR:
        case PlaybackState.STATE_NONE:
        case PlaybackState.STATE_STOPPED:
            return false;
        default:
            return true;
    }
}
项目:MrinalMusicPlayer    文件:BaseActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(this, token);
    setMediaController(mediaController);
    mediaController.registerCallback(mMediaControllerCallback);

    if (shouldShowControls()) {
        showPlaybackControls();
    } else {
        LogHelper.d(TAG, "connectionCallback.onConnected: " +
            "hiding controls because metadata is null");
        hidePlaybackControls();
    }

    if (mControlsFragment != null) {
        mControlsFragment.onConnected();
    }

    onMediaControllerConnected();
}
项目:MrinalMusicPlayer    文件:FullScreenPlayerActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(FullScreenPlayerActivity.this, token);
    if (mediaController.getMetadata() == null) {
        finish();
        return;
    }
    setMediaController(mediaController);
    mediaController.registerCallback(mCallback);
    PlaybackState state = mediaController.getPlaybackState();
    updatePlaybackState(state);
    MediaMetadata metadata = mediaController.getMetadata();
    if (metadata != null) {
        updateMediaDescription(metadata.getDescription());
        updateDuration(metadata);
    }
    updateProgress();
    if (state != null && (state.getState() == PlaybackState.STATE_PLAYING ||
            state.getState() == PlaybackState.STATE_BUFFERING)) {
        scheduleSeekbarUpdate();
    }
}
项目:UniversalMusicPlayer    文件:MediaBrowserFragment.java   
private void checkForUserVisibleErrors(boolean forceError) {
    boolean showError = forceError;
    // If offline, message is about the lack of connectivity:
    if (!NetworkHelper.isOnline(getActivity())) {
        mErrorMessage.setText(R.string.error_no_connection);
        showError = true;
    } else {
        // otherwise, if state is ERROR and metadata!=null, use playback state error message:
        MediaController controller = getActivity().getMediaController();
        if (controller != null
            && controller.getMetadata() != null
            && controller.getPlaybackState().getState() == PlaybackState.STATE_ERROR
            && controller.getPlaybackState().getErrorMessage() != null) {
            mErrorMessage.setText(controller.getPlaybackState().getErrorMessage());
            showError = true;
        } else if (forceError) {
            // Finally, if the caller requested to show error, show a generic message:
            mErrorMessage.setText(R.string.error_loading_media);
            showError = true;
        }
    }
    mErrorView.setVisibility(showError ? View.VISIBLE : View.GONE);
    LogHelper.d(TAG, "checkForUserVisibleErrors. forceError=", forceError,
        " showError=", showError,
        " isOnline=", NetworkHelper.isOnline(getActivity()));
}
项目:UniversalMusicPlayer    文件:MediaBrowserFragment.java   
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MediaBrowser.MediaItem item = getItem(position);
    int state = MediaItemViewHolder.STATE_NONE;
    if (item.isPlayable()) {
        state = MediaItemViewHolder.STATE_PLAYABLE;
        MediaController controller = ((Activity) getContext()).getMediaController();
        if (controller != null && controller.getMetadata() != null) {
            String currentPlaying = controller.getMetadata().getDescription().getMediaId();
            String musicId = MediaIDHelper.extractMusicIDFromMediaID(
                    item.getDescription().getMediaId());
            if (currentPlaying != null && currentPlaying.equals(musicId)) {
                if (controller.getPlaybackState().getState() ==
                        PlaybackState.STATE_PLAYING) {
                    state = MediaItemViewHolder.STATE_PLAYING;
                } else if (controller.getPlaybackState().getState() !=
                        PlaybackState.STATE_ERROR) {
                    state = MediaItemViewHolder.STATE_PAUSED;
                }
            }
        }
    }
    return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
        item.getDescription(), state);
}
项目:UniversalMusicPlayer    文件:BaseActivity.java   
/**
 * Check if the MediaSession is active and in a "playback-able" state
 * (not NONE and not STOPPED).
 *
 * @return true if the MediaSession's state requires playback controls to be visible.
 */
protected boolean shouldShowControls() {
    MediaController mediaController = getMediaController();
    if (mediaController == null ||
        mediaController.getMetadata() == null ||
        mediaController.getPlaybackState() == null) {
        return false;
    }
    switch (mediaController.getPlaybackState().getState()) {
        case PlaybackState.STATE_ERROR:
        case PlaybackState.STATE_NONE:
        case PlaybackState.STATE_STOPPED:
            return false;
        default:
            return true;
    }
}
项目:UniversalMusicPlayer    文件:BaseActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(this, token);
    setMediaController(mediaController);
    mediaController.registerCallback(mMediaControllerCallback);

    if (shouldShowControls()) {
        showPlaybackControls();
    } else {
        LogHelper.d(TAG, "connectionCallback.onConnected: " +
            "hiding controls because metadata is null");
        hidePlaybackControls();
    }

    if (mControlsFragment != null) {
        mControlsFragment.onConnected();
    }

    onMediaControllerConnected();
}
项目:UniversalMusicPlayer    文件:FullScreenPlayerActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(FullScreenPlayerActivity.this, token);
    if (mediaController.getMetadata() == null) {
        finish();
        return;
    }
    setMediaController(mediaController);
    mediaController.registerCallback(mCallback);
    PlaybackState state = mediaController.getPlaybackState();
    updatePlaybackState(state);
    MediaMetadata metadata = mediaController.getMetadata();
    if (metadata != null) {
        updateMediaDescription(metadata.getDescription());
        updateDuration(metadata);
    }
    updateProgress();
    if (state != null && (state.getState() == PlaybackState.STATE_PLAYING ||
            state.getState() == PlaybackState.STATE_BUFFERING)) {
        scheduleSeekbarUpdate();
    }
}
项目:MusicFromChina    文件:MediaBrowserFragment.java   
private void checkForUserVisibleErrors(boolean forceError) {
    boolean showError = forceError;
    // If offline, message is about the lack of connectivity:
    if (!NetworkHelper.isOnline(getActivity())) {
        mErrorMessage.setText(R.string.error_no_connection);
        showError = true;
    } else {
        // otherwise, if state is ERROR and metadata!=null, use playback state error message:
        MediaController controller = getActivity().getMediaController();
        if (controller != null
            && controller.getMetadata() != null
            && controller.getPlaybackState().getState() == PlaybackState.STATE_ERROR
            && controller.getPlaybackState().getErrorMessage() != null) {
            mErrorMessage.setText(controller.getPlaybackState().getErrorMessage());
            showError = true;
        } else if (forceError) {
            // Finally, if the caller requested to show error, show a generic message:
            mErrorMessage.setText(R.string.error_loading_media);
            showError = true;
        }
    }
    mErrorView.setVisibility(showError ? View.VISIBLE : View.GONE);
    LogHelper.d(TAG, "checkForUserVisibleErrors. forceError=", forceError,
        " showError=", showError,
        " isOnline=", NetworkHelper.isOnline(getActivity()));
}
项目:MusicFromChina    文件:MediaBrowserFragment.java   
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MediaBrowser.MediaItem item = getItem(position);
    int state = MediaItemViewHolder.STATE_NONE;
    if (item.isPlayable()) {
        state = MediaItemViewHolder.STATE_PLAYABLE;
        MediaController controller = ((Activity) getContext()).getMediaController();
        if (controller != null && controller.getMetadata() != null) {
            String currentPlaying = controller.getMetadata().getDescription().getMediaId();
            String musicId = MediaIDHelper.extractMusicIDFromMediaID(
                    item.getDescription().getMediaId());
            if (currentPlaying != null && currentPlaying.equals(musicId)) {
                if (controller.getPlaybackState().getState() ==
                        PlaybackState.STATE_PLAYING) {
                    state = MediaItemViewHolder.STATE_PLAYING;
                } else if (controller.getPlaybackState().getState() !=
                        PlaybackState.STATE_ERROR) {
                    state = MediaItemViewHolder.STATE_PAUSED;
                }
            }
        }
    }
    return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
        item.getDescription(), state);
}
项目:MusicFromChina    文件:BaseActivity.java   
/**
 * Check if the MediaSession is active and in a "playback-able" state
 * (not NONE and not STOPPED).
 *
 * @return true if the MediaSession's state requires playback controls to be visible.
 */
protected boolean shouldShowControls() {
    MediaController mediaController = getMediaController();
    if (mediaController == null ||
        mediaController.getMetadata() == null ||
        mediaController.getPlaybackState() == null) {
        return false;
    }
    switch (mediaController.getPlaybackState().getState()) {
        case PlaybackState.STATE_ERROR:
        case PlaybackState.STATE_NONE:
        case PlaybackState.STATE_STOPPED:
            return false;
        default:
            return true;
    }
}
项目:MusicFromChina    文件:BaseActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(this, token);
    setMediaController(mediaController);
    mediaController.registerCallback(mMediaControllerCallback);

    if (shouldShowControls()) {
        showPlaybackControls();
    } else {
        LogHelper.d(TAG, "connectionCallback.onConnected: " +
            "hiding controls because metadata is null");
        hidePlaybackControls();
    }

    if (mControlsFragment != null) {
        mControlsFragment.onConnected();
    }

    onMediaControllerConnected();
}
项目:MusicFromChina    文件:FullScreenPlayerActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(FullScreenPlayerActivity.this, token);
    if (mediaController.getMetadata() == null) {
        finish();
        return;
    }
    setMediaController(mediaController);
    mediaController.registerCallback(mCallback);
    PlaybackState state = mediaController.getPlaybackState();
    updatePlaybackState(state);
    MediaMetadata metadata = mediaController.getMetadata();
    if (metadata != null) {
        updateMediaDescription(metadata.getDescription());
        updateDuration(metadata);
    }
    updateProgress();
    if (state != null && (state.getState() == PlaybackState.STATE_PLAYING ||
            state.getState() == PlaybackState.STATE_BUFFERING)) {
        scheduleSeekbarUpdate();
    }
}
项目:UniversalAndroidMusicPlayer    文件:MediaBrowserFragment.java   
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MediaBrowser.MediaItem item = getItem(position);
    int itemState = MediaItemViewHolder.STATE_NONE;
    if (item.isPlayable()) {
        itemState = MediaItemViewHolder.STATE_PLAYABLE;
        MediaController controller = ((Activity) getContext()).getMediaController();
        if (controller != null && controller.getMetadata() != null) {
            String currentPlaying = controller.getMetadata().getDescription().getMediaId();
            String musicId = MediaIDHelper.extractMusicIDFromMediaID(
                    item.getDescription().getMediaId());
            if (currentPlaying != null && currentPlaying.equals(musicId)) {
                PlaybackState pbState = controller.getPlaybackState();
                if (pbState == null || pbState.getState() == PlaybackState.STATE_ERROR) {
                    itemState = MediaItemViewHolder.STATE_NONE;
                } else if (pbState.getState() == PlaybackState.STATE_PLAYING) {
                    itemState = MediaItemViewHolder.STATE_PLAYING;
                } else {
                    itemState = MediaItemViewHolder.STATE_PAUSED;
                }
            }
        }
    }
    return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
        item.getDescription(), itemState);
}
项目:UniversalAndroidMusicPlayer    文件:BaseActivity.java   
/**
 * Check if the MediaSession is active and in a "playback-able" state
 * (not NONE and not STOPPED).
 *
 * @return true if the MediaSession's state requires playback controls to be visible.
 */
protected boolean shouldShowControls() {
    MediaController mediaController = getMediaController();
    if (mediaController == null ||
        mediaController.getMetadata() == null ||
        mediaController.getPlaybackState() == null) {
        return false;
    }
    switch (mediaController.getPlaybackState().getState()) {
        case PlaybackState.STATE_ERROR:
        case PlaybackState.STATE_NONE:
        case PlaybackState.STATE_STOPPED:
            return false;
        default:
            return true;
    }
}
项目:UniversalAndroidMusicPlayer    文件:BaseActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(this, token);
    setMediaController(mediaController);
    mediaController.registerCallback(mMediaControllerCallback);

    if (shouldShowControls()) {
        showPlaybackControls();
    } else {
        LogHelper.d(TAG, "connectionCallback.onConnected: " +
            "hiding controls because metadata is null");
        hidePlaybackControls();
    }

    if (mControlsFragment != null) {
        mControlsFragment.onConnected();
    }

    onMediaControllerConnected();
}
项目:UniversalAndroidMusicPlayer    文件:FullScreenPlayerActivity.java   
private void connectToSession(MediaSession.Token token) {
    MediaController mediaController = new MediaController(FullScreenPlayerActivity.this, token);
    if (mediaController.getMetadata() == null) {
        finish();
        return;
    }
    setMediaController(mediaController);
    mediaController.registerCallback(mCallback);
    PlaybackState state = mediaController.getPlaybackState();
    updatePlaybackState(state);
    MediaMetadata metadata = mediaController.getMetadata();
    if (metadata != null) {
        updateMediaDescription(metadata.getDescription());
        updateDuration(metadata);
    }
    updateProgress();
    if (state != null && (state.getState() == PlaybackState.STATE_PLAYING ||
            state.getState() == PlaybackState.STATE_BUFFERING)) {
        scheduleSeekbarUpdate();
    }
}
项目:AcDisplay    文件:MediaController2Lollipop.java   
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
    MediaController2Lollipop p = mMediaControllerRef.get();
    if (p == null) return;

    if (p.mMediaController != null) {
        for (MediaController controller : controllers) {
            if (p.mMediaController == controller) {
                // Current media controller is still alive.
                return;
            }
        }
    }

    MediaController mc = pickBestMediaController(controllers);
    if (mc != null) {
        p.setMediaController(mc);
    } else {
        p.clearMediaController(true);
    }
}
项目:AcDisplay    文件:MediaController2Lollipop.java   
@Override
public void run(@NonNull MediaController2 mc) {
    final MediaController2Lollipop mcl = (MediaController2Lollipop) mc;
    final MediaController source = mcl.mMediaController;

    if (source != null && mToken.equals(source.getSessionToken())) {
        long now = SystemClock.elapsedRealtime();

        final MediaMetadata metadata = source.getMetadata();
        final PlaybackState playbackState = source.getPlaybackState();

        long delta = SystemClock.elapsedRealtime() - now;
        Log.i(TAG, "Got the new metadata & playback state in " + delta + " millis. "
                + "The media controller is " + source.getPackageName());

        mHandler.post(new Runnable() {
            @Override
            public void run() {
                mcl.updateMetadata(metadata);
                mcl.updatePlaybackState(playbackState);
            }
        });
    }
}
项目: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!");
    }
}
项目:sflauncher    文件:MediaListener.java   
private MediaController pickController(List<MediaController> controllers){
    for(int i=0;i<controllers.size();i++){
        MediaController mc = controllers.get(i);
        if(mc!=null&&mc.getPlaybackState()!=null&&
                mc.getPlaybackState().getState()==PlaybackState.STATE_PLAYING){
            return mc;
        }
    }
    if(controllers.size()>0) return controllers.get(0);
    return null;
}
项目:sflauncher    文件:MediaListener.java   
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
    mediaController = pickController(controllers);
    if(mediaController==null)return;
    mediaController.registerCallback(callback);
    meta = mediaController.getMetadata();
    updateMetadata();
}
项目: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));
}
项目:musicwidget    文件:NotificationListener.java   
@Override
public int onStartCommand(Intent i, int startId, int i2){
    if(mediaController==null){
        List<MediaController> controllers = mediaSessionManager.getActiveSessions(componentName);
        mediaController = pickController(controllers);
        if(mediaController!=null) {
            mediaController.registerCallback(callback);
            meta = mediaController.getMetadata();
            updateMetadata();
        }
        sendBroadcast(new Intent(StandardWidget.WIDGET_UPDATE));
    }
    return START_STICKY;
}
项目:musicwidget    文件:NotificationListener.java   
private MediaController pickController(List<MediaController> controllers){
    for(int i=0;i<controllers.size();i++){
        MediaController mc = controllers.get(i);
        if(mc!=null&&mc.getPlaybackState()!=null&&
                mc.getPlaybackState().getState()==PlaybackState.STATE_PLAYING){
            return mc;
        }
    }
    if(controllers.size()>0) return controllers.get(0);
    return null;
}
项目:musicwidget    文件:NotificationListener.java   
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
    mediaController = pickController(controllers);
    if(mediaController==null)return;
    mediaController.registerCallback(callback);
    meta = mediaController.getMetadata();
    updateMetadata();
    sendBroadcast(new Intent(StandardWidget.WIDGET_UPDATE));
}
项目:boohee_v5.6    文件:MediaControllerCompatApi21.java   
public static List<Object> getQueue(Object controllerObj) {
    List<QueueItem> queue = ((MediaController) controllerObj).getQueue();
    if (queue == null) {
        return null;
    }
    return new ArrayList(queue);
}
项目: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");
    }
}
项目:AsteroidOSSync    文件:MediaService.java   
@Override
public void onActiveSessionsChanged(List<MediaController> controllers) {
    if (controllers.size() > 0) {
        if (mMediaController != null) {
            if (!controllers.get(0).getSessionToken().equals(mMediaController.getSessionToken())) {
                // Detach current controller
                mMediaController.unregisterCallback(mMediaCallback);
                Log.d("MediaService", "MediaController removed");
                mMediaController = null;

                // Attach new controller
                mMediaController = controllers.get(0);
                mMediaController.registerCallback(mMediaCallback);
                mMediaCallback.onMetadataChanged(mMediaController.getMetadata());
                if(mMediaController.getPlaybackState() != null)
                    mMediaCallback.onPlaybackStateChanged(mMediaController.getPlaybackState());
                Log.d("MediaService", "MediaController set: " + mMediaController.getPackageName());
            }
        } else {
            // Attach new controller
            mMediaController = controllers.get(0);
            mMediaController.registerCallback(mMediaCallback);
            mMediaCallback.onMetadataChanged(mMediaController.getMetadata());
            if(mMediaController.getPlaybackState() != null)
                mMediaCallback.onPlaybackStateChanged(mMediaController.getPlaybackState());
            Log.d("MediaService", "MediaController set: " + mMediaController.getPackageName());
        }
    } else {
        byte[] data = new byte[]{0};
        mDevice.write(mediaArtistCharac, data, MediaService.this);
        mDevice.write(mediaAlbumCharac, data, MediaService.this);
        mDevice.write(mediaTitleCharac, data, MediaService.this);
    }
}
项目:android_packages_apps_tv    文件:DvrPlaybackMediaSessionHelper.java   
private void initializeMediaSession(String mediaSessionTag) {
    mMediaSession = new MediaSession(mActivity, mediaSessionTag);
    mMediaSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS
            | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
    mNowPlayingCardWidth = mActivity.getResources()
            .getDimensionPixelSize(R.dimen.notif_card_img_max_width);
    mNowPlayingCardHeight = mActivity.getResources()
            .getDimensionPixelSize(R.dimen.notif_card_img_height);
    mMediaSession.setCallback(new MediaSessionCallback());
    mActivity.setMediaController(
            new MediaController(mActivity, mMediaSession.getSessionToken()));
    updateMediaSessionPlaybackState();
}
项目: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);
}
项目:MrinalMusicPlayer    文件:TvVerticalGridActivity.java   
@Override
public void onConnected() {
    LogHelper.d(TAG, "onConnected: session token ",
            mMediaBrowser.getSessionToken());

    MediaController mediaController = new MediaController(
            TvVerticalGridActivity.this, mMediaBrowser.getSessionToken());
    setMediaController(mediaController);

    browse();
}
项目:MrinalMusicPlayer    文件:TvBrowseActivity.java   
@Override
public void onConnected() {
    LogHelper.d(TAG, "onConnected: session token ",
            mMediaBrowser.getSessionToken());

    MediaController mediaController = new MediaController(
            TvBrowseActivity.this, mMediaBrowser.getSessionToken());
    setMediaController(mediaController);

    navigateToBrowser(mMediaId);
}
项目:MrinalMusicPlayer    文件:TvBrowseFragment.java   
@Override
public void onMetadataChanged(MediaMetadata metadata) {
    if (metadata != null) {
        MediaController mediaController = getActivity().getMediaController();
        long activeQueueId;
        if (mediaController.getPlaybackState() == null) {
            activeQueueId = QueueItem.UNKNOWN_ID;
        } else {
            activeQueueId = mediaController.getPlaybackState().getActiveQueueItemId();
        }
        updateNowPlayingList(mediaController.getQueue(), activeQueueId);
        mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());
    }
}
项目:MrinalMusicPlayer    文件:TvBrowseFragment.java   
@Override
public void onQueueChanged(List<QueueItem> queue) {
    // queue has changed somehow
    MediaController mediaController = getActivity().getMediaController();

    long activeQueueId;
    if (mediaController.getPlaybackState() == null) {
        activeQueueId = QueueItem.UNKNOWN_ID;
    } else {
        activeQueueId = mediaController.getPlaybackState().getActiveQueueItemId();
    }
    updateNowPlayingList(queue, activeQueueId);
    mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());
}