Android APIs
public class

RemotePlaybackClient

extends Object
java.lang.Object
   ↳ android.support.v7.media.RemotePlaybackClient

Class Overview

A helper class for playing media on remote routes using the remote playback protocol defined by MediaControlIntent.

The client maintains session state and offers a simplified interface for issuing remote playback media control intents to a single route.

Summary

Nested Classes
class RemotePlaybackClient.ActionCallback Base callback type for remote playback requests. 
class RemotePlaybackClient.ItemActionCallback Callback for remote playback requests that operate on items. 
class RemotePlaybackClient.SessionActionCallback Callback for remote playback requests that operate on sessions. 
class RemotePlaybackClient.StatusCallback A callback that will receive media status updates. 
Public Constructors
RemotePlaybackClient(Context context, MediaRouter.RouteInfo route)
Creates a remote playback client for a route.
Public Methods
void endSession(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to end the media playback session.
void enqueue(Uri contentUri, String mimeType, Bundle metadata, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)
Sends a request to enqueue a media item.
String getSessionId()
Gets the current session id if there is one.
void getSessionStatus(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to get the status of the media playback session.
void getStatus(String itemId, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)
Sends a request to get the status of a media item.
boolean hasSession()
Returns true if the client currently has a session.
boolean isQueuingSupported()
Returns true if the route supports queuing features.
boolean isRemotePlaybackSupported()
Returns true if the route supports remote playback.
boolean isSessionManagementSupported()
Returns true if the route supports session management features.
void pause(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to pause media playback.
void play(Uri contentUri, String mimeType, Bundle metadata, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)
Sends a request to play a media item.
void release()
Releases resources owned by the client.
void remove(String itemId, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)
Sends a request to remove a media item from the queue.
void resume(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to resume (unpause) media playback.
void seek(String itemId, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)
Sends a request to seek to a new position in a media item.
void setSessionId(String sessionId)
Sets the current session id.
void setStatusCallback(RemotePlaybackClient.StatusCallback callback)
Sets a callback that should receive status updates when the state of media sessions or media items created by this instance of the remote playback client changes.
void startSession(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to start a new media playback session.
void stop(Bundle extras, RemotePlaybackClient.SessionActionCallback callback)
Sends a request to stop media playback and clear the media playback queue.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public RemotePlaybackClient (Context context, MediaRouter.RouteInfo route)

Creates a remote playback client for a route.

Parameters
route The media route.

Public Methods

public void endSession (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to end the media playback session.

The request is issued in the current session. If this request is successful, the session id property will be set to null after the callback is invoked.

Please refer to ACTION_END_SESSION for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_END_SESSION intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.
UnsupportedOperationException if the route does not support session management.

public void enqueue (Uri contentUri, String mimeType, Bundle metadata, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)

Sends a request to enqueue a media item.

Enqueues a new item to play. If the queue was previously paused, then will remain paused.

The request is issued in the current session. If no session is available, then one is created implicitly.

Please refer to ACTION_ENQUEUE for more information about the semantics of this request.

Parameters
contentUri The content Uri to enqueue.
mimeType The mime type of the content, or null if unknown.
metadata The media item metadata bundle, or null if none.
positionMillis The initial content position for the item in milliseconds, or 0 to start at the beginning.
extras A bundle of extra arguments to be added to the ACTION_ENQUEUE intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
UnsupportedOperationException if the route does not support queuing.

public String getSessionId ()

Gets the current session id if there is one.

Returns
  • The current session id, or null if none.

public void getSessionStatus (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to get the status of the media playback session.

The request is issued in the current session.

Please refer to ACTION_GET_SESSION_STATUS for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_GET_SESSION_STATUS intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.
UnsupportedOperationException if the route does not support session management.

public void getStatus (String itemId, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)

Sends a request to get the status of a media item.

The request is issued in the current session.

Please refer to ACTION_GET_STATUS for more information about the semantics of this request.

Parameters
itemId The item id.
extras A bundle of extra arguments to be added to the ACTION_GET_STATUS intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.

public boolean hasSession ()

Returns true if the client currently has a session.

Equivalent to checking whether getSessionId() returns a non-null result.

Returns
  • True if there is a current session.

public boolean isQueuingSupported ()

Returns true if the route supports queuing features.

If the route does not support queuing, then at most one media item can be played at a time and the enqueue(Uri, String, Bundle, long, Bundle, RemotePlaybackClient.ItemActionCallback) method will not be available.

This method returns true if the route supports all of the basic remote playback actions and all of the following actions: enqueue, remove.

Returns

public boolean isRemotePlaybackSupported ()

Returns true if the route supports remote playback.

If the route does not support remote playback, then none of the functionality offered by the client will be available.

This method returns true if the route supports all of the following actions: play, seek, get status, pause, resume, stop.

Returns
  • True if remote playback is supported.

public boolean isSessionManagementSupported ()

Returns true if the route supports session management features.

If the route does not support session management, then the session will not be created until the first media item is played.

This method returns true if the route supports all of the basic remote playback actions and all of the following actions: start session, get session status, end session.

Returns

public void pause (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to pause media playback.

The request is issued in the current session. If playback is already paused then the request has no effect.

Please refer to ACTION_PAUSE for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_PAUSE intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.

public void play (Uri contentUri, String mimeType, Bundle metadata, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)

Sends a request to play a media item.

Clears the queue and starts playing the new item immediately. If the queue was previously paused, then it is resumed as a side-effect of this request.

The request is issued in the current session. If no session is available, then one is created implicitly.

Please refer to ACTION_PLAY for more information about the semantics of this request.

Parameters
contentUri The content Uri to play.
mimeType The mime type of the content, or null if unknown.
metadata The media item metadata bundle, or null if none.
positionMillis The initial content position for the item in milliseconds, or 0 to start at the beginning.
extras A bundle of extra arguments to be added to the ACTION_PLAY intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
UnsupportedOperationException if the route does not support remote playback.

public void release ()

Releases resources owned by the client.

public void remove (String itemId, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)

Sends a request to remove a media item from the queue.

The request is issued in the current session.

Please refer to ACTION_REMOVE for more information about the semantics of this request.

Parameters
itemId The item id.
extras A bundle of extra arguments to be added to the ACTION_REMOVE intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.
UnsupportedOperationException if the route does not support queuing.

public void resume (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to resume (unpause) media playback.

The request is issued in the current session. If playback is not paused then the request has no effect.

Please refer to ACTION_RESUME for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_RESUME intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.

public void seek (String itemId, long positionMillis, Bundle extras, RemotePlaybackClient.ItemActionCallback callback)

Sends a request to seek to a new position in a media item.

Seeks to a new position. If the queue was previously paused then it remains paused but the item's new position is still remembered.

The request is issued in the current session.

Please refer to ACTION_SEEK for more information about the semantics of this request.

Parameters
itemId The item id.
positionMillis The new content position for the item in milliseconds, or 0 to start at the beginning.
extras A bundle of extra arguments to be added to the ACTION_SEEK intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.

public void setSessionId (String sessionId)

Sets the current session id.

It is usually not necessary to set the session id explicitly since it is created as a side-effect of other requests such as play(Uri, String, Bundle, long, Bundle, RemotePlaybackClient.ItemActionCallback), enqueue(Uri, String, Bundle, long, Bundle, RemotePlaybackClient.ItemActionCallback), and startSession(Bundle, RemotePlaybackClient.SessionActionCallback).

Parameters
sessionId The new session id, or null if none.

public void setStatusCallback (RemotePlaybackClient.StatusCallback callback)

Sets a callback that should receive status updates when the state of media sessions or media items created by this instance of the remote playback client changes.

The callback should be set before the session is created or any play commands are issued.

Parameters
callback The callback to set. May be null to remove the previous callback.

public void startSession (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to start a new media playback session.

The application must wait for the callback to indicate that this request is complete before issuing other requests that affect the session. If this request is successful then the previous session will be invalidated.

Please refer to ACTION_START_SESSION for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_START_SESSION intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
UnsupportedOperationException if the route does not support session management.

public void stop (Bundle extras, RemotePlaybackClient.SessionActionCallback callback)

Sends a request to stop media playback and clear the media playback queue.

The request is issued in the current session. If the queue is already empty then the request has no effect.

Please refer to ACTION_STOP for more information about the semantics of this request.

Parameters
extras A bundle of extra arguments to be added to the ACTION_STOP intent, or null if none.
callback A callback to invoke when the request has been processed, or null if none.
Throws
IllegalStateException if there is no current session.