public class

UIMediaController

extends Object
implements SessionManagerListener<CastSession> RemoteMediaClient.Listener
java.lang.Object
   ↳ com.google.android.gms.cast.framework.media.uicontroller.UIMediaController

Class Overview

A UIMediaController lets you bind the state of Android UI components to the state of a remote CastSession. This class simplifies writing a sender UI with playback controls. To use this class, create an instance of this class, then call various bind methods to associate state of your Android UI components to a remote playback control, or the change of the remote playback state or metadata.

Summary

Public Constructors
UIMediaController(Activity activity)
Constructs an instance of UIMediaController that will be used to bind UI elements of an activity.
Public Methods
void bindImageViewToImageOfCurrentItem(ImageView view, int imageType, int placeHolderDrawableResId)
This method is deprecated. Use bindImageViewToImageOfCurrentItem(ImageView, ImageHints, int) instead.
void bindImageViewToImageOfCurrentItem(ImageView view, int imageType, View placeHolderView)
This method is deprecated. Use bindImageViewToImageOfCurrentItem(ImageView, ImageHints, View) instead.
void bindImageViewToImageOfCurrentItem(ImageView view, ImageHints imageHints, int placeHolderDrawableResId)
Binds an ImageView to the first image of the current item.
void bindImageViewToImageOfCurrentItem(ImageView view, ImageHints imageHints, View placeHolderView)
Binds an ImageView to an image of the current item.
void bindImageViewToImageOfPreloadedItem(ImageView view, int imageType, int placeHolderDrawableResId)
This method is deprecated. Use bindImageViewToImageOfPreloadedItem(ImageView, ImageHints, int) instead.
void bindImageViewToImageOfPreloadedItem(ImageView view, ImageHints imageHints, int placeHolderDrawableResId)
Binds an ImageView to the first image of the preloaded item.
void bindImageViewToMuteToggle(ImageView view)
Binds an ImageView to mute and unmute the Cast receiver device volume.
void bindImageViewToPlayPauseToggle(ImageView view, Drawable playDrawable, Drawable pauseDrawable, Drawable stopDrawable, View loadingIndicator, boolean hideViewWhenLoading)
Binds an ImageView to toggle play / pause of the current item.
void bindProgressBar(ProgressBar view)
Binds a ProgressBar to the playback progress of the current item.
void bindProgressBar(ProgressBar view, long progressUpdateStepMs)
Binds a ProgressBar to the playback progress of the current item.
void bindSeekBar(SeekBar view, long progressUpdateStepMs)
Binds a SeekBar to control the playback position of the current item.
void bindSeekBar(SeekBar view)
Binds a SeekBar to control the playback position of the current item.
void bindTextViewToMetadataOfCurrentItem(TextView view, String key)
Binds a TextView to the metadata of the current item, keyed by key.
void bindTextViewToMetadataOfCurrentItem(TextView view, List<String> keysInPreference)
Binds a TextView to the metadata of the current item, keyed by a list of keys in the order of preferences.
void bindTextViewToMetadataOfPreloadedItem(TextView view, List<String> keysInPreference)
Binds an TextView to the metadata of the preloaded item, keyed by a list of keys in the order of preferences.
void bindTextViewToMetadataOfPreloadedItem(TextView view, String key)
Binds an TextView to the metadata of the preloaded item, keyed by key.
void bindTextViewToSmartSubtitle(TextView textView)
Binds a TextView to the most appropriate item in MediaMetadata for subtitle.
void bindTextViewToStreamDuration(TextView view, View liveStreamIndicator)
Binds a TextView to the playback duration of the current item.
void bindTextViewToStreamDuration(TextView view)
Binds a TextView to the playback duration of the current item.
void bindTextViewToStreamPosition(TextView view, boolean updateWhileScrubbing)
Binds a TextView to the playback position of the current item.
void bindTextViewToStreamPosition(TextView view, boolean updateWhileScrubbing, long progressUpdateStepMs)
Binds a TextView to the playback position of the current item.
void bindViewToClosedCaption(View view)
Binds a View to launching the TracksChooserDialogFragment when clicked.
void bindViewToForward(View view, long skipStepMs)
Binds a View to skip forward playback of the current item skipStepMs milliseconds.
void bindViewToLaunchExpandedController(View view)
Binds a View to launching the expanded controller Activity specified by the name in getExpandedControllerActivityClassName().
void bindViewToLoadingIndicator(View view)
Binds a View's visibility state to VISIBLE only when the remote receiver is either buffering, or loading the next item.
void bindViewToRewind(View view, long skipStepMs)
Binds a View to rewind playback of the current item skipStepMs milliseconds.
void bindViewToSkipNext(View view, int invisibleState)
Binds a View to skip to the next item in the queue.
void bindViewToSkipPrev(View view, int invisibleState)
Binds a View to skip to the previous item in the queue.
void bindViewToUIController(View view, UIController uiController)
Binds a View to a UIController.
void bindViewVisibilityToMediaSession(View view, int invisibleState)
Binds a View's visibility state to the availability of a Cast media session.
void bindViewVisibilityToPreloadingEvent(View view, int invisibleState)
Binds a View's visibility state to the availability of a preloaded item.
void dispose()
Disposes this instance.
RemoteMediaClient getRemoteMediaClient()
Returns the managed RemoteMediaClient of the current active CastSession.
boolean isActive()
Returns true if there is an active connected Cast Session.
void onAdBreakStatusUpdated()
Called when updated ad break status information is received.
void onMetadataUpdated()
Called when updated media metadata is received.
void onPreloadStatusUpdated()
Called when updated player queue preload status information is received, for example, the next item to play has been preloaded.
void onQueueStatusUpdated()
Called when updated player queue status information is received.
void onSendingRemoteMediaRequest()
Called when there is an out going request to the receiver.
void onSessionEnded(CastSession session, int error)
void onSessionEnding(CastSession session)
void onSessionResumeFailed(CastSession session, int error)
void onSessionResumed(CastSession session, boolean wasSuspended)
void onSessionResuming(CastSession session, String sessionId)
void onSessionStartFailed(CastSession session, int error)
void onSessionStarted(CastSession session, String sessionId)
void onSessionStarting(CastSession session)
void onSessionSuspended(CastSession session, int reason)
void onStatusUpdated()
Called when updated player status information is received.
void setPostRemoteMediaClientListener(RemoteMediaClient.Listener listener)
Sets a RemoteMediaClient.Listener that will be called after all the other registered listeners in the UIMediaController instance are invoked.
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.google.android.gms.cast.framework.SessionManagerListener
From interface com.google.android.gms.cast.framework.media.RemoteMediaClient.Listener

Public Constructors

public UIMediaController (Activity activity)

Constructs an instance of UIMediaController that will be used to bind UI elements of an activity.

Parameters
activity Activity

Public Methods

public void bindImageViewToImageOfCurrentItem (ImageView view, int imageType, int placeHolderDrawableResId)

This method is deprecated.
Use bindImageViewToImageOfCurrentItem(ImageView, ImageHints, int) instead.

Binds an ImageView to the first image of the current item. If the current item doesn't contain any image or the framework fails to fetch the Bitmap for the image, imagePlaceHolder will be used instead.

Parameters
view ImageView: The View to bind.
imageType int: Type of image, used by the ImagePicker to choose the proper image.
placeHolderDrawableResId int: The resource ID of a Drawable used as a placeholder if no image is available from the current item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToImageOfCurrentItem (ImageView view, int imageType, View placeHolderView)

This method is deprecated.
Use bindImageViewToImageOfCurrentItem(ImageView, ImageHints, View) instead.

Binds an ImageView to an image of the current item. When an item is loaded, and there is a WebImage that is suitable to be displayed, the Bitmap of that image will be fetched and set on the ImageView. If the item contains multiple images, this class will choose one using the ImagePicker configured in CastMediaOptions, with the given imageType.

Parameters
view ImageView: The ImageView.
imageType int: Type of image, used by the ImagePicker to choose the proper image.
placeHolderView View: The View to show as a placeholder if no image is available from the current item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToImageOfCurrentItem (ImageView view, ImageHints imageHints, int placeHolderDrawableResId)

Binds an ImageView to the first image of the current item. If the current item doesn't contain any image or the framework fails to fetch the Bitmap for the image, imagePlaceHolder will be used instead.

Parameters
view ImageView: The View to bind.
imageHints ImageHints: ImageHints used by the ImagePicker to choose the proper image.
placeHolderDrawableResId int: The resource ID of a Drawable used as a placeholder if no image is available from the current item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToImageOfCurrentItem (ImageView view, ImageHints imageHints, View placeHolderView)

Binds an ImageView to an image of the current item. When an item is loaded, and there is a WebImage that is suitable to be displayed, the Bitmap of that image will be fetched and set on the ImageView. If the item contains multiple images, this class will choose one using the ImagePicker configured in CastMediaOptions, with the given imageType.

Parameters
view ImageView: The ImageView.
imageHints ImageHints: ImageHints used by the ImagePicker to choose the proper image.
placeHolderView View: The View to show as a placeholder if no image is available from the current item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToImageOfPreloadedItem (ImageView view, int imageType, int placeHolderDrawableResId)

This method is deprecated.
Use bindImageViewToImageOfPreloadedItem(ImageView, ImageHints, int) instead.

Binds an ImageView to the first image of the preloaded item. If the current item doesn't contain any image or the framework fails to fetch the Bitmap for the image, imagePlaceHolder will be used instead.

Parameters
view ImageView: The View to bind.
imageType int: Type of image, used by the ImagePicker to choose the proper image.
placeHolderDrawableResId int: The resource ID of a Drawable used as a placeholder if no image is available from the preloaded item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToImageOfPreloadedItem (ImageView view, ImageHints imageHints, int placeHolderDrawableResId)

Binds an ImageView to the first image of the preloaded item. If the current item doesn't contain any image or the framework fails to fetch the Bitmap for the image, imagePlaceHolder will be used instead.

Parameters
view ImageView: The View to bind.
imageHints ImageHints: ImageHints used by the ImagePicker to choose the proper image.
placeHolderDrawableResId int: The resource ID of a Drawable used as a placeholder if no image is available from the preloaded item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToMuteToggle (ImageView view)

Binds an ImageView to mute and unmute the Cast receiver device volume. Tapping on view toggles its selection state. The selected state represents "mute", and the unselected state represents "unmute". Tapping on a "mute" button sends a mute request to the receiver, and tapping on an "unmute" button sends an unmute request. The bound view will also listen to onVolumeChanged() events to update its selection state.

Parameters
view ImageView: The ImageView to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindImageViewToPlayPauseToggle (ImageView view, Drawable playDrawable, Drawable pauseDrawable, Drawable stopDrawable, View loadingIndicator, boolean hideViewWhenLoading)

Binds an ImageView to toggle play / pause of the current item.

Parameters
view ImageView: The ImageView to bind.
playDrawable Drawable: The Drawable to use when the state of the control is "play".
pauseDrawable Drawable: The Drawable to use when the state of the control is "pause".
stopDrawable Drawable: The Drawable to use when the state of the control is "stop live stream". If set to null, the framework will display the pauseDrawable when a "stop live stream" icon is needed.
loadingIndicator View: A View that should be displayed to indicate that a remote request is ongoing.
hideViewWhenLoading boolean: true if visibility of imageView should be set to INVISIBLE when loading an item, false if it should be set to VISIBLE when loading an item.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindProgressBar (ProgressBar view)

Binds a ProgressBar to the playback progress of the current item. Progress will be updated once per second. If no item is loaded the progress of the ProgressBar will be set to zero.

Parameters
view ProgressBar: The ProgressBar to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindProgressBar (ProgressBar view, long progressUpdateStepMs)

Binds a ProgressBar to the playback progress of the current item. Progress will be updated once per progressUpdateStepMs milliseconds. If no item is loaded the progress of the ProgressBar will be set to zero.

Parameters
view ProgressBar: The ProgressBar to bind.
progressUpdateStepMs long: The interval between each update of the progress, in milliseconds.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindSeekBar (SeekBar view, long progressUpdateStepMs)

Binds a SeekBar to control the playback position of the current item. Progress will be updated once per progressUpdateStepMs milliseconds. If no item is loaded the progress of the ProgressBar will be set to zero.

Parameters
view SeekBar: The SeekBar to bind.
progressUpdateStepMs long: The interval between each update of the progress, in milliseconds.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindSeekBar (SeekBar view)

Binds a SeekBar to control the playback position of the current item. Progress will be updated once per second. If no item is loaded the progress of the ProgressBar will be set to zero.

Parameters
view SeekBar: The SeekBar to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToMetadataOfCurrentItem (TextView view, String key)

Binds a TextView to the metadata of the current item, keyed by key. If metadata for key is unavailable, the TextView will be left untouched.

Parameters
view TextView: The View to bind.
key String: The key of the metadata field to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToMetadataOfCurrentItem (TextView view, List<String> keysInPreference)

Binds a TextView to the metadata of the current item, keyed by a list of keys in the order of preferences.

Parameters
view TextView: The View to bind.
keysInPreference List: The list of keys in the order of preference.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToMetadataOfPreloadedItem (TextView view, List<String> keysInPreference)

Binds an TextView to the metadata of the preloaded item, keyed by a list of keys in the order of preferences.

Parameters
view TextView: The View to bind.
keysInPreference List: The list of keys in the order of preference.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToMetadataOfPreloadedItem (TextView view, String key)

Binds an TextView to the metadata of the preloaded item, keyed by key. If metadata for key is unavailable, the TextView will be left untouched.

Parameters
view TextView: The View to bind.
key String: The key of the metadata field to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToSmartSubtitle (TextView textView)

Binds a TextView to the most appropriate item in MediaMetadata for subtitle. For example the studio name for a movie or the artist name for a music track.

Parameters
textView TextView

public void bindTextViewToStreamDuration (TextView view, View liveStreamIndicator)

Binds a TextView to the playback duration of the current item. If no item is loaded, or if the currently playing item is a live stream, then the text will be set to "--:--".

When playing a live stream item, if liveStreamIndicator is not null, then view will be hidden and liveStreamIndicator will be shown to better indicate that a live stream is playing.

Parameters
view TextView: The TextView to bind.
liveStreamIndicator View: If View to indicate that a live stream items is playing.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToStreamDuration (TextView view)

Binds a TextView to the playback duration of the current item. If no item is loaded, or if the currently playing item is a live stream, then the text will be set to "--:--".

Parameters
view TextView: The TextView to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToStreamPosition (TextView view, boolean updateWhileScrubbing)

Binds a TextView to the playback position of the current item. Position will be updated once per second. If no item is loaded the text will be set to "--:--";

Parameters
view TextView: The TextView to bind.
updateWhileScrubbing boolean: If this is set to true, the the text in view will be updated to the position of a bound SeekBar while is is being scrubbed.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindTextViewToStreamPosition (TextView view, boolean updateWhileScrubbing, long progressUpdateStepMs)

Binds a TextView to the playback position of the current item. Position will be updated once per progressUpdateStepMs milliseconds. If no item is loaded the text will be set to "--:--";

Parameters
view TextView: The TextView to bind.
updateWhileScrubbing boolean: If this is set to true, the the text in view will be updated to the position of a bound SeekBar while is is being scrubbed.
progressUpdateStepMs long: The interval between each update of the progress, in milliseconds.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToClosedCaption (View view)

Binds a View to launching the TracksChooserDialogFragment when clicked.

Parameters
view View
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToForward (View view, long skipStepMs)

Binds a View to skip forward playback of the current item skipStepMs milliseconds.

Parameters
view View: The View to bind.
skipStepMs long: Time (in milliseconds) to skip forward.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToLaunchExpandedController (View view)

Binds a View to launching the expanded controller Activity specified by the name in getExpandedControllerActivityClassName().

Parameters
view View
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToLoadingIndicator (View view)

Binds a View's visibility state to VISIBLE only when the remote receiver is either buffering, or loading the next item. Otherwise visibility of the View will be set to GONE.

Parameters
view View: The View to bind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToRewind (View view, long skipStepMs)

Binds a View to rewind playback of the current item skipStepMs milliseconds.

Parameters
view View: The View to bind.
skipStepMs long: Time (in milliseconds) to rewind.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToSkipNext (View view, int invisibleState)

Binds a View to skip to the next item in the queue.

Parameters
view View: The View to bind.
invisibleState int: Either INVISIBLE or GONE. This parameter will be set as the visibility of view when there isn't a previous item in the queue.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToSkipPrev (View view, int invisibleState)

Binds a View to skip to the previous item in the queue.

Parameters
view View: The View to bind.
invisibleState int: Either INVISIBLE or GONE. This parameter will be set as the visibility of view when there isn't a previous item in the queue.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewToUIController (View view, UIController uiController)

Binds a View to a UIController. This method is typically used when the uiController is used to implement a custom control button.

Parameters
view View: The View to bind.
uiController UIController: The UIController of the view.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewVisibilityToMediaSession (View view, int invisibleState)

Binds a View's visibility state to the availability of a Cast media session. View will be set to VISIBLE when there is a media session, and will be set to invisibleState when there isn't a media session.

Parameters
view View: The View to bind.
invisibleState int: Either INVISIBLE or GONE, which will be set as the visibility of view when there isn't a media session.
Throws
IllegalStateException If this method is not called on the main thread.

public void bindViewVisibilityToPreloadingEvent (View view, int invisibleState)

Binds a View's visibility state to the availability of a preloaded item. View will be set to VISIBLE when there is a preloaded item, and will be set to invisibleState when there isn't a preloaded item.

Parameters
view View: The View to bind.
invisibleState int: Either INVISIBLE or GONE, which will be set as the visibility of view when there isn't a preloaded item.
Throws
IllegalStateException If this method is not called on the main thread.

public void dispose ()

Disposes this instance. The UIMediaController can not be reused after this method is called.

Throws
IllegalStateException If this method is not called on the main thread.

public RemoteMediaClient getRemoteMediaClient ()

Returns the managed RemoteMediaClient of the current active CastSession.

Returns
RemoteMediaClient
Throws
IllegalStateException If this method is not called on the main thread.

public boolean isActive ()

Returns true if there is an active connected Cast Session.

Returns
boolean
Throws
IllegalStateException If this method is not called on the main thread.

public void onAdBreakStatusUpdated ()

Called when updated ad break status information is received.

public void onMetadataUpdated ()

Called when updated media metadata is received.

public void onPreloadStatusUpdated ()

Called when updated player queue preload status information is received, for example, the next item to play has been preloaded. This gives the caller a chance to response to preloading related event, such as displaying what will be played next in the UI.

public void onQueueStatusUpdated ()

Called when updated player queue status information is received.

public void onSendingRemoteMediaRequest ()

Called when there is an out going request to the receiver. This gives the caller a chance to update state of the UI of the sender app, for example, disable some controls.

public void onSessionEnded (CastSession session, int error)

Parameters
session CastSession
error int

public void onSessionEnding (CastSession session)

Parameters
session CastSession

public void onSessionResumeFailed (CastSession session, int error)

Parameters
session CastSession
error int

public void onSessionResumed (CastSession session, boolean wasSuspended)

Parameters
session CastSession
wasSuspended boolean

public void onSessionResuming (CastSession session, String sessionId)

Parameters
session CastSession
sessionId String

public void onSessionStartFailed (CastSession session, int error)

Parameters
session CastSession
error int

public void onSessionStarted (CastSession session, String sessionId)

Parameters
session CastSession
sessionId String

public void onSessionStarting (CastSession session)

Parameters
session CastSession

public void onSessionSuspended (CastSession session, int reason)

Parameters
session CastSession
reason int

public void onStatusUpdated ()

Called when updated player status information is received.

public void setPostRemoteMediaClientListener (RemoteMediaClient.Listener listener)

Sets a RemoteMediaClient.Listener that will be called after all the other registered listeners in the UIMediaController instance are invoked. Also, the states of all the bound View instances are guaranteed to be updated before this listener is invoked.

This listener is useful if you want to modify the state of the bound View instances.

Parameters
listener RemoteMediaClient.Listener
Throws
IllegalStateException If this method is not called on the main thread.