FileDocCategorySizeDatePackage
MediaControllerGlue.javaAPI DocAndroid 5.1 API7942Thu Mar 12 22:22:56 GMT 2015android.support.v17.leanback.app

MediaControllerGlue

public abstract class MediaControllerGlue extends PlaybackControlGlue
A helper class for implementing a glue layer between a {@link PlaybackOverlayFragment} and a {@link android.support.v4.media.session.MediaControllerCompat}.

Fields Summary
private static final String
TAG
private static final boolean
DEBUG
private android.support.v4.media.session.MediaControllerCompat
mMediaController
private final MediaControllerCompat.Callback
mCallback
Constructors Summary
public MediaControllerGlue(android.content.Context context, PlaybackOverlayFragment fragment, int[] seekSpeeds)
Constructor for the glue.

The {@link PlaybackOverlayFragment} must be passed in. A {@link android.support.v17.leanback.widget.OnItemViewClickedListener} and {@link PlaybackOverlayFragment.InputEventHandler} will be set on the fragment.

param
context
param
fragment
param
seekSpeeds Array of seek speeds for fast forward and rewind.


                                                
      
                                
                                 
        super(context, fragment, seekSpeeds);
    
public MediaControllerGlue(android.content.Context context, PlaybackOverlayFragment fragment, int[] fastForwardSpeeds, int[] rewindSpeeds)
Constructor for the glue.

The {@link PlaybackOverlayFragment} must be passed in. A {@link android.support.v17.leanback.widget.OnItemViewClickedListener} and {@link PlaybackOverlayFragment.InputEventHandler} will be set on the fragment.

param
context
param
fragment
param
fastForwardSpeeds Array of seek speeds for fast forward.
param
rewindSpeeds Array of seek speeds for rewind.

        super(context, fragment, fastForwardSpeeds, rewindSpeeds);
    
Methods Summary
public voidattachToMediaController(android.support.v4.media.session.MediaControllerCompat mediaController)
Attaches to the given media controller.

        if (mediaController != mMediaController) {
            if (DEBUG) Log.v(TAG, "New media controller " + mediaController);
            detach();
            mMediaController = mediaController;
            if (mMediaController != null) {
                mMediaController.registerCallback(mCallback);
            }
            onMetadataChanged();
            onStateChanged();
        }
    
public voiddetach()
Detaches from the media controller. Must be called when the object is no longer needed.

        if (mMediaController != null) {
            mMediaController.unregisterCallback(mCallback);
        }
        mMediaController = null;
    
public intgetCurrentPosition()

        return (int) mMediaController.getPlaybackState().getPosition();
    
public intgetCurrentSpeedId()

        int speed = (int) mMediaController.getPlaybackState().getPlaybackSpeed();
        if (speed == 0) {
            return PLAYBACK_SPEED_PAUSED;
        } else if (speed == 1) {
            return PLAYBACK_SPEED_NORMAL;
        } else if (speed > 0) {
            int[] seekSpeeds = getFastForwardSpeeds();
            for (int index = 0; index < seekSpeeds.length; index++) {
                if (speed == seekSpeeds[index]) {
                    return PLAYBACK_SPEED_FAST_L0 + index;
                }
            }
        } else {
            int[] seekSpeeds = getRewindSpeeds();
            for (int index = 0; index < seekSpeeds.length; index++) {
                if (-speed == seekSpeeds[index]) {
                    return -PLAYBACK_SPEED_FAST_L0 - index;
                }
            }
        }
        Log.w(TAG, "Couldn't find index for speed " + speed);
        return PLAYBACK_SPEED_INVALID;
    
public android.graphics.drawable.DrawablegetMediaArt()

        Bitmap bitmap = mMediaController.getMetadata().getDescription().getIconBitmap();
        return bitmap == null ? null : new BitmapDrawable(getContext().getResources(), bitmap);
    
public final android.support.v4.media.session.MediaControllerCompatgetMediaController()
Returns the media controller currently attached.

        return mMediaController;
    
public intgetMediaDuration()

        return (int) mMediaController.getMetadata().getLong(
                MediaMetadataCompat.METADATA_KEY_DURATION);
    
public java.lang.CharSequencegetMediaSubtitle()

        return mMediaController.getMetadata().getDescription().getSubtitle();
    
public java.lang.CharSequencegetMediaTitle()

        return mMediaController.getMetadata().getDescription().getTitle();
    
public longgetSupportedActions()

        long result = 0;
        long actions = mMediaController.getPlaybackState().getActions();
        if ((actions & PlaybackStateCompat.ACTION_PLAY_PAUSE) != 0) {
            result |= ACTION_PLAY_PAUSE;
        }
        if ((actions & PlaybackStateCompat.ACTION_SKIP_TO_NEXT) != 0) {
            result |= ACTION_SKIP_TO_NEXT;
        }
        if ((actions & PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS) != 0) {
            result |= ACTION_SKIP_TO_PREVIOUS;
        }
        if ((actions & PlaybackStateCompat.ACTION_FAST_FORWARD) != 0) {
            result |= ACTION_FAST_FORWARD;
        }
        if ((actions & PlaybackStateCompat.ACTION_REWIND) != 0) {
            result |= ACTION_REWIND;
        }
        return result;
    
public booleanhasValidMedia()

        return mMediaController != null && mMediaController.getMetadata() != null;
    
public booleanisMediaPlaying()

        return mMediaController.getPlaybackState().getState() == PlaybackStateCompat.STATE_PLAYING;
    
protected voidpausePlayback()

        if (DEBUG) Log.v(TAG, "pausePlayback");
        mMediaController.getTransportControls().pause();
    
protected voidskipToNext()

        if (DEBUG) Log.v(TAG, "skipToNext");
        mMediaController.getTransportControls().skipToNext();
    
protected voidskipToPrevious()

        if (DEBUG) Log.v(TAG, "skipToPrevious");
        mMediaController.getTransportControls().skipToPrevious();
    
protected voidstartPlayback(int speed)

        if (DEBUG) Log.v(TAG, "startPlayback speed " + speed);
        if (speed == PLAYBACK_SPEED_NORMAL) {
            mMediaController.getTransportControls().play();
        } else if (speed > 0) {
            mMediaController.getTransportControls().fastForward();
        } else {
            mMediaController.getTransportControls().rewind();
        }