MediaController
  public
  
  final
  
  class
  MediaController
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.media.session.MediaController | 
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 through MediaSessionManager if you
 hold the "android.permission.MEDIA_CONTENT_CONTROL" permission or are an
 enabled notification listener or by getting a MediaSession.Token
 directly from the session owner.
 
MediaController objects are thread-safe.
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        class | MediaController.CallbackCallback for receiving updates from the session. | 
| 
        
        
        
        
        class | MediaController.PlaybackInfoHolds information about the current playback and how audio is handled for this session. | 
| 
        
        
        
        
        class | MediaController.TransportControlsInterface for controlling media playback on a session. | 
| Public constructors | |
|---|---|
| 
      MediaController(Context context, MediaSession.Token token)
      Create a new MediaController from a session's token. | |
| 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. | 
| 
        
        
        
        
        
        MediaMetadata | 
      getMetadata()
      Get the current metadata for this session. | 
| 
        
        
        
        
        
        String | 
      getPackageName()
      Get the session owner's package name. | 
| 
        
        
        
        
        
        MediaController.PlaybackInfo | 
      getPlaybackInfo()
      Returns the current playback info for this session. | 
| 
        
        
        
        
        
        PlaybackState | 
      getPlaybackState()
      Get the current playback state for this session. | 
| 
        
        
        
        
        
        List<MediaSession.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. | 
| 
        
        
        
        
        
        Bundle | 
      getSessionInfo()
      Gets the additional session information which was set when the session was created. | 
| 
        
        
        
        
        
        MediaSession.Token | 
      getSessionToken()
      Get the token for the session this is connected to. | 
| 
        
        
        
        
        
        String | 
      getTag()
      Get the session's tag for debugging purposes. | 
| 
        
        
        
        
        
        MediaController.TransportControls | 
      getTransportControls()
      Get a  | 
| 
        
        
        
        
        
        void | 
      registerCallback(MediaController.Callback callback, Handler handler)
      Registers a callback to receive updates from the session. | 
| 
        
        
        
        
        
        void | 
      registerCallback(MediaController.Callback callback)
      Registers a callback to receive updates from the Session. | 
| 
        
        
        
        
        
        void | 
      sendCommand(String command, Bundle args, 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(MediaController.Callback callback)
      Unregisters the specified callback. | 
| Inherited methods | |
|---|---|
Public constructors
MediaController
public MediaController (Context context, MediaSession.Token token)
Create a new MediaController from a session's token.
| Parameters | |
|---|---|
| context | Context: The caller's context.
 This value cannot benull. | 
| token | MediaSession.Token: The token for the session.
 This value cannot benull. | 
Public methods
adjustVolume
public void adjustVolume (int direction, 
                int flags)Adjust the volume of the output this session is playing on. The direction
 must be one of AudioManager.ADJUST_LOWER,
 AudioManager.ADJUST_RAISE, or AudioManager.ADJUST_SAME.
 The command will be ignored if the session does not support
 VolumeProvider.VOLUME_CONTROL_RELATIVE or
 VolumeProvider.VOLUME_CONTROL_ABSOLUTE. The flags in
 AudioManager may be used to affect the handling.
| Parameters | |
|---|---|
| direction | int: The direction to adjust the volume in. | 
| flags | int: Any flags to pass with the command. | 
See also:
dispatchMediaButtonEvent
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 | KeyEvent: The media button event to dispatch.
 This value cannot benull. | 
| Returns | |
|---|---|
| boolean | true if the event was sent to the session, false otherwise. | 
getExtras
public Bundle getExtras ()
Get the extras for this session.
| Returns | |
|---|---|
| Bundle | This value may be null. | 
getFlags
public long getFlags ()
Get the flags for this session. Flags are defined in MediaSession.
| Returns | |
|---|---|
| long | The current set of flags for the session. | 
getMetadata
public MediaMetadata getMetadata ()
Get the current metadata for this session.
| Returns | |
|---|---|
| MediaMetadata | The current MediaMetadata or null. | 
getPackageName
public String getPackageName ()
Get the session owner's package name.
| Returns | |
|---|---|
| String | The package name of the session owner. | 
getPlaybackInfo
public MediaController.PlaybackInfo getPlaybackInfo ()
Returns the current playback info for this session.
| Returns | |
|---|---|
| MediaController.PlaybackInfo | This value cannot be null. | 
getPlaybackState
public PlaybackState getPlaybackState ()
Get the current playback state for this session.
| Returns | |
|---|---|
| PlaybackState | The current PlaybackState or null | 
getQueue
public List<MediaSession.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 | |
|---|---|
| List<MediaSession.QueueItem> | The current play queue or null. | 
getQueueTitle
public CharSequence getQueueTitle ()
Get the queue title for this session.
| Returns | |
|---|---|
| CharSequence | This value may be null. | 
getRatingType
public int getRatingType ()
Get the rating type supported by the session. One of:
- Rating.RATING_NONE
- Rating.RATING_HEART
- Rating.RATING_THUMB_UP_DOWN
- Rating.RATING_3_STARS
- Rating.RATING_4_STARS
- Rating.RATING_5_STARS
- Rating.RATING_PERCENTAGE
| Returns | |
|---|---|
| int | The supported rating type | 
getSessionActivity
public PendingIntent getSessionActivity ()
Get an intent for launching UI associated with this session if one exists.
| Returns | |
|---|---|
| PendingIntent | A PendingIntentto launch UI or null. | 
getSessionInfo
public Bundle getSessionInfo ()
Gets the additional session information which was set when the session was created.
| Returns | |
|---|---|
| Bundle | The additional session information, or an empty Bundleif not set.
 This value cannot benull. | 
getSessionToken
public MediaSession.Token getSessionToken ()
Get the token for the session this is connected to.
| Returns | |
|---|---|
| MediaSession.Token | The token for the connected session.
 This value cannot be null. | 
getTag
public String getTag ()
Get the session's tag for debugging purposes.
| Returns | |
|---|---|
| String | The session's tag.
 This value cannot be null. | 
getTransportControls
public MediaController.TransportControls getTransportControls ()
Get a TransportControls instance to send transport actions to
 the associated session.
| Returns | |
|---|---|
| MediaController.TransportControls | A transport controls instance.
 This value cannot be null. | 
registerCallback
public void registerCallback (MediaController.Callback callback, Handler handler)
Registers a callback to receive updates from the session. Updates will be posted on the specified handler's thread.
| Parameters | |
|---|---|
| callback | MediaController.Callback: The callback object, must not be null. | 
| handler | Handler: The handler to post updates on. If null the callers thread
            will be used. | 
registerCallback
public void registerCallback (MediaController.Callback callback)
Registers a callback to receive updates from the Session. Updates will be posted on the caller's thread.
| Parameters | |
|---|---|
| callback | MediaController.Callback: The callback object, must not be null. | 
sendCommand
public void sendCommand (String command, Bundle args, 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 | String: The command to send
 This value cannot benull. | 
| args | Bundle: Any parameters to include with the command
 This value may benull. | 
| cb | ResultReceiver: The callback to receive the result on
 This value may benull. | 
setVolumeTo
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
 VolumeProvider.VOLUME_CONTROL_ABSOLUTE. The flags in
 AudioManager may be used to affect the handling.
| Parameters | |
|---|---|
| value | int: The value to set it to, between 0 and the reported max. | 
| flags | int: Flags fromAudioManagerto include with the volume
            request. | 
See also:
unregisterCallback
public void unregisterCallback (MediaController.Callback callback)
Unregisters the specified callback. If an update has already been posted you may still receive it after calling this method.
| Parameters | |
|---|---|
| callback | MediaController.Callback: The callback to remove.
 This value cannot benull. | 
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
