Android APIs
public final class

MediaControllerCompat

extends Object
java.lang.Object
   ↳ android.support.v4.media.session.MediaControllerCompat

Class Overview

Allows an app to interact with an ongoing media session. Media buttons and other commands can be sent to the session. A callback may be registered to receive updates from the session, such as metadata and play state changes.

A MediaController can be created if you have a MediaSessionCompat.Token from the session owner.

MediaController objects are thread-safe.

This is a helper for accessing features in MediaSession introduced after API level 4 in a backwards compatible fashion.

Summary

Nested Classes
class MediaControllerCompat.Callback Callback for receiving updates on from the session. 
class MediaControllerCompat.PlaybackInfo Holds information about the way volume is handled for this session. 
class MediaControllerCompat.TransportControls Interface for controlling media playback on a session. 
Public Constructors
MediaControllerCompat(Context context, MediaSessionCompat session)
Creates a media controller from a session.
MediaControllerCompat(Context context, MediaSessionCompat.Token sessionToken)
Creates a media controller from a session token which may have been obtained from another process.
Public Methods
void adjustVolume(int direction, int flags)
Adjust the volume of the output this session is playing on.
boolean dispatchMediaButtonEvent(KeyEvent keyEvent)
Send the specified media button event to the session.
Bundle getExtras()
Get the extras for this session.
long getFlags()
Get the flags for this session.
Object getMediaController()
Gets the underlying framework MediaController object.
MediaMetadataCompat getMetadata()
Get the current metadata for this session.
String getPackageName()
Get the session owner's package name.
MediaControllerCompat.PlaybackInfo getPlaybackInfo()
Get the current playback info for this session.
PlaybackStateCompat getPlaybackState()
Get the current playback state for this session.
List<MediaSessionCompat.QueueItem> getQueue()
Get the current play queue for this session if one is set.
CharSequence getQueueTitle()
Get the queue title for this session.
int getRatingType()
Get the rating type supported by the session.
PendingIntent getSessionActivity()
Get an intent for launching UI associated with this session if one exists.
MediaSessionCompat.Token getSessionToken()
Get the token for the session this controller is connected to.
MediaControllerCompat.TransportControls getTransportControls()
Get a MediaControllerCompat.TransportControls instance for this session.
void registerCallback(MediaControllerCompat.Callback callback)
Adds a callback to receive updates from the Session.
void registerCallback(MediaControllerCompat.Callback callback, Handler handler)
Adds a callback to receive updates from the session.
void sendCommand(String command, Bundle params, ResultReceiver cb)
Sends a generic command to the session.
void setVolumeTo(int value, int flags)
Set the volume of the output this session is playing on.
void unregisterCallback(MediaControllerCompat.Callback callback)
Stop receiving updates on the specified callback.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public MediaControllerCompat (Context context, MediaSessionCompat session)

Creates a media controller from a session.

Parameters
session The session to be controlled.

public MediaControllerCompat (Context context, MediaSessionCompat.Token sessionToken)

Creates a media controller from a session token which may have been obtained from another process.

Parameters
sessionToken The token of the session to be controlled.
Throws
RemoteException if the session is not accessible.

Public Methods

public void adjustVolume (int direction, int flags)

Adjust the volume of the output this session is playing on. The direction must be one of ADJUST_LOWER, ADJUST_RAISE, or ADJUST_SAME. The command will be ignored if the session does not support VOLUME_CONTROL_RELATIVE or VOLUME_CONTROL_ABSOLUTE. The flags in AudioManager may be used to affect the handling.

Parameters
direction The direction to adjust the volume in.
flags Any flags to pass with the command.

public boolean dispatchMediaButtonEvent (KeyEvent keyEvent)

Send the specified media button event to the session. Only media keys can be sent by this method, other keys will be ignored.

Parameters
keyEvent The media button event to dispatch.
Returns
  • true if the event was sent to the session, false otherwise.

public Bundle getExtras ()

Get the extras for this session.

public long getFlags ()

Get the flags for this session. Flags are defined in MediaSessionCompat.

Returns
  • The current set of flags for the session.

public Object getMediaController ()

Gets the underlying framework MediaController object.

This method is only supported on API 21+.

Returns

public MediaMetadataCompat getMetadata ()

Get the current metadata for this session.

Returns
  • The current MediaMetadata or null.

public String getPackageName ()

Get the session owner's package name.

Returns
  • The package name of of the session owner.

public MediaControllerCompat.PlaybackInfo getPlaybackInfo ()

Get the current playback info for this session.

Returns
  • The current playback info or null.

public PlaybackStateCompat getPlaybackState ()

Get the current playback state for this session.

Returns
  • The current PlaybackState or null

public List<MediaSessionCompat.QueueItem> getQueue ()

Get the current play queue for this session if one is set. If you only care about the current item getMetadata() should be used.

Returns
  • The current play queue or null.

public CharSequence getQueueTitle ()

Get the queue title for this session.

public int getRatingType ()

Returns
  • The supported rating type

public PendingIntent getSessionActivity ()

Get an intent for launching UI associated with this session if one exists.

Returns

public MediaSessionCompat.Token getSessionToken ()

Get the token for the session this controller is connected to.

Returns
  • The session's token.

public MediaControllerCompat.TransportControls getTransportControls ()

Get a MediaControllerCompat.TransportControls instance for this session.

Returns
  • A controls instance

public void registerCallback (MediaControllerCompat.Callback callback)

Adds a callback to receive updates from the Session. Updates will be posted on the caller's thread.

Parameters
callback The callback object, must not be null.

public void registerCallback (MediaControllerCompat.Callback callback, Handler handler)

Adds a callback to receive updates from the session. Updates will be posted on the specified handler's thread.

Parameters
callback The callback object, must not be null.
handler The handler to post updates on. If null the callers thread will be used.

public void sendCommand (String command, Bundle params, ResultReceiver cb)

Sends a generic command to the session. It is up to the session creator to decide what commands and parameters they will support. As such, commands should only be sent to sessions that the controller owns.

Parameters
command The command to send
params Any parameters to include with the command
cb The callback to receive the result on

public void setVolumeTo (int value, int flags)

Set the volume of the output this session is playing on. The command will be ignored if it does not support VOLUME_CONTROL_ABSOLUTE. The flags in AudioManager may be used to affect the handling.

Parameters
value The value to set it to, between 0 and the reported max.
flags Flags from AudioManager to include with the volume request.

public void unregisterCallback (MediaControllerCompat.Callback callback)

Stop receiving updates on the specified callback. If an update has already been posted you may still receive it after calling this method.

Parameters
callback The callback to remove