# MediaControllerCompat

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  
belongs to Maven artifact com.android.support:support-media-compat:28.0.0-alpha1  
Summary:[Nested Classes](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#nestedclasses)\|[Ctors](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#pubctors)\|[Methods](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#)  

# MediaControllerCompat

| This package is part of the Android[support library](https://developer.android.com/topic/libraries/support-library)which is no longer maintained. The support library has been superseded by[AndroidX](https://developer.android.com/jetpack/androidx)which is part of[Jetpack](https://developer.android.com/jetpack). We recommend using the AndroidX libraries in all new projects. You should also consider[migrating](https://developer.android.com/jetpack/androidx/migrate)existing projects to AndroidX. To find the AndroidX class that maps to this deprecated class, see the AndroidX support library[class mappings](https://developer.android.com/jetpack/androidx/migrate/class-mappings).

`
public

final

class
MediaControllerCompat
`  
`

extends Object


``


`

|---|--------------------------------------------------------|
| java.lang.Object                                          ||
| ↳ | android.support.v4.media.session.MediaControllerCompat |

<br />

*** ** * ** ***

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](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)from the session owner.

MediaController objects are thread-safe.

This is a helper for accessing features in[MediaSession](https://developer.android.com/reference/android/media/session/MediaSession.html)introduced after API level 4 in a backwards compatible fashion.

If MediaControllerCompat is created with a[session token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)from another process, following methods will not work directly after the creation if the[session token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)is not passed through a[MediaBrowserCompat](https://developer.android.com/reference/android/support/v4/media/MediaBrowserCompat):

- [getPlaybackState()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackState()).[getExtras()](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#getExtras())
- [isCaptioningEnabled()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isCaptioningEnabled())
- [getRepeatMode()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRepeatMode())
- [getShuffleMode()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getShuffleMode())

<br />

### Developer Guides

For information about building your media application, read the[Media Apps](https://developer.android.com/guide/topics/media-apps)developer guide.

<br />

## Summary

|                                                                                                       ### Nested classes                                                                                                        ||
|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` class` | [MediaControllerCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback) Callback for receiving updates on from the session.                         |
| ` class` | [MediaControllerCompat.PlaybackInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo) Holds information about the way volume is handled for this session. |
| ` class` | [MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls) Interface for controlling media playback on a session.    |

|                                                                                                                                                                                                                                                                                ### Public constructors                                                                                                                                                                                                                                                                                 ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat))`(`[Context](https://developer.android.com/reference/android/content/Context.html)` context, `[MediaSessionCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat)` session) ` Creates a media controller from a session.                                                                                |
| ` `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat.Token))`(`[Context](https://developer.android.com/reference/android/content/Context.html)` context, `[MediaSessionCompat.Token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)` sessionToken) ` Creates a media controller from a session token which may have been obtained from another process. |

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ### Public methods                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` void`                                                                                                                                                        | ` `[addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat))`(`[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)` description) ` Adds a queue item from the given`description`at the end of the play queue of this session.                                                                                                                                                                                                                                                                                                                                                                                                |
| ` void`                                                                                                                                                        | ` `[addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat, int))`(`[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)` description, int index) ` Adds a queue item from the given`description`at the specified position in the play queue of this session.                                                                                                                                                                                                                                                                                                                                                                 |
| ` void`                                                                                                                                                        | ` `[adjustVolume](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#adjustVolume(int, int))`(int direction, int flags) ` Adjusts the volume of the output this session is playing on.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ` boolean`                                                                                                                                                     | ` `[dispatchMediaButtonEvent](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#dispatchMediaButtonEvent(android.view.KeyEvent))`(`[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent.html)` keyEvent) ` Sends the specified media button event to the session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ` `[Bundle](https://developer.android.com/reference/android/os/Bundle.html)                                                                                    | ` `[getExtras](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getExtras())`() ` Gets the extras for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ` long`                                                                                                                                                        | ` `[getFlags](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())`() ` Gets the flags for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ` Object`                                                                                                                                                      | ` `[getMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController())`() ` Gets the underlying framework[MediaController](https://developer.android.com/reference/android/media/session/MediaController.html)object.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ` static `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)                              | ` `[getMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity))`(`[Activity](https://developer.android.com/reference/android/app/Activity.html)` activity) ` Retrieves the[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)set in the activity by[setMediaController(Activity, MediaControllerCompat)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat))for sending media key and volume events.                                                                                        |
| ` `[MediaMetadataCompat](https://developer.android.com/reference/android/support/v4/media/MediaMetadataCompat)                                                 | ` `[getMetadata](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMetadata())`() ` Gets the current metadata for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ` String`                                                                                                                                                      | ` `[getPackageName](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPackageName())`() ` Gets the session owner's package name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ` `[MediaControllerCompat.PlaybackInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo)           | ` `[getPlaybackInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackInfo())`() ` Gets the current playback info for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ` `[PlaybackStateCompat](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat)                                         | ` `[getPlaybackState](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackState())`() ` Gets the current playback state for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ` List<`[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)`>`               | ` `[getQueue](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getQueue())`() ` Gets the current play queue for this session if one is set.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ` CharSequence`                                                                                                                                                | ` `[getQueueTitle](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getQueueTitle())`() ` Gets the queue title for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ` int`                                                                                                                                                         | ` `[getRatingType](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRatingType())`() ` Gets the rating type supported by the session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ` int`                                                                                                                                                         | ` `[getRepeatMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRepeatMode())`() ` Gets the repeat mode for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ` `[PendingIntent](https://developer.android.com/reference/android/app/PendingIntent.html)                                                                     | ` `[getSessionActivity](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionActivity())`() ` Gets an intent for launching UI associated with this session if one exists.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ` `[MediaSessionCompat.Token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)                               | ` `[getSessionToken](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionToken())`() ` Gets the token for the session this controller is connected to.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ` int`                                                                                                                                                         | ` `[getShuffleMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getShuffleMode())`() ` Gets the shuffle mode for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ` `[MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls) | ` `[getTransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getTransportControls())`() ` Gets a[MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls)instance for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ` boolean`                                                                                                                                                     | ` `[isCaptioningEnabled](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isCaptioningEnabled())`() ` Returns whether captioning is enabled for this session.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ` boolean`                                                                                                                                                     | ` `[isSessionReady](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())`() ` Returns whether the session is ready or not.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ` void`                                                                                                                                                        | ` `[registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback, android.os.Handler))`(`[MediaControllerCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback)` callback, `[Handler](https://developer.android.com/reference/android/os/Handler.html)` handler) ` Adds a callback to receive updates from the session.                                                                                                                                                                                                                                                                               |
| ` void`                                                                                                                                                        | ` `[registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback))`(`[MediaControllerCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback)` callback) ` Adds a callback to receive updates from the Session.                                                                                                                                                                                                                                                                                                                                                                                         |
| ` void`                                                                                                                                                        | ` `[removeQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat))`(`[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)` description) ` Removes the first occurrence of the specified[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)with the given[description](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)in the play queue of the associated session.                                                                                                                                  |
| ` void`                                                                                                                                                        | ` `[removeQueueItemAt](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItemAt(int))`(int index) ` *This method was deprecated in API level 26.1.0. Use[removeQueueItem(MediaDescriptionCompat)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat))instead.*                                                                                                                                                                                                                                                                                                                                                                           |
| ` void`                                                                                                                                                        | ` `[sendCommand](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver))`(String command, `[Bundle](https://developer.android.com/reference/android/os/Bundle.html)` params, `[ResultReceiver](https://developer.android.com/reference/android/os/ResultReceiver.html)` cb) ` Sends a generic command to the session.                                                                                                                                                                                                                                                                                                                                                                     |
| ` static void`                                                                                                                                                 | ` `[setMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat))`(`[Activity](https://developer.android.com/reference/android/app/Activity.html)` activity, `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)` mediaController) ` Sets a[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)in the`activity`for later retrieval via[getMediaController(Activity)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity)). |
| ` void`                                                                                                                                                        | ` `[setVolumeTo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setVolumeTo(int, int))`(int value, int flags) ` Sets the volume of the output this session is playing on.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ` void`                                                                                                                                                        | ` `[unregisterCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#unregisterCallback(android.support.v4.media.session.MediaControllerCompat.Callback))`(`[MediaControllerCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback)` callback) ` Stops receiving updates on the specified callback.                                                                                                                                                                                                                                                                                                                                                                                       |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/android/support/v4-media-session/MediaControllerCompat#)From class` java.lang.Object ` |-------------------|-------------------------------| | ` Object`         | ` clone() `                   | | ` boolean`        | ` equals(Object arg0) `       | | ` void`           | ` finalize() `                | | ` final Class<?>` | ` getClass() `                | | ` int`            | ` hashCode() `                | | ` final void`     | ` notify() `                  | | ` final void`     | ` notifyAll() `               | | ` String`         | ` toString() `                | | ` final void`     | ` wait(long arg0, int arg1) ` | | ` final void`     | ` wait(long arg0) `           | | ` final void`     | ` wait() `                    | ||

## Public constructors

### MediaControllerCompat

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaControllerCompat (Context context,
                MediaSessionCompat session)
```

Creates a media controller from a session.

<br />

|                              Parameters                               ||
|-----------|------------------------------------------------------------|
| `context` | `Context` <br />                                           |
| `session` | `MediaSessionCompat`: The session to be controlled. <br /> |

### MediaControllerCompat

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaControllerCompat (Context context,
                MediaSessionCompat.Token sessionToken)
```

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

<br />

|                                          Parameters                                           ||
|----------------|-------------------------------------------------------------------------------|
| `context`      | `Context` <br />                                                              |
| `sessionToken` | `MediaSessionCompat.Token`: The token of the session to be controlled. <br /> |

|                                                            Throws                                                             ||
|--------------------------------------------------------------------------------------------|-----------------------------------|
| [RemoteException](https://developer.android.com/reference/android/os/RemoteException.html) | if the session is not accessible. |

## Public methods

### addQueueItem

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void addQueueItem (MediaDescriptionCompat description)
```

Adds a queue item from the given`description`at the end of the play queue of this session. Not all sessions may support this. To know whether the session supports this, get the session's flags with[getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())and check that the flag[FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)is set.

<br />

|                                                                                                                                                                Parameters                                                                                                                                                                ||
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `description` | `MediaDescriptionCompat`: The[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)for creating the[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)to be inserted. <br /> |

|                                 Throws                                 ||
|---------------------------------|---------------------------------------|
| `UnsupportedOperationException` | If this session doesn't support this. |

**See also:**

- [getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())
- [FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)  

### addQueueItem

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void addQueueItem (MediaDescriptionCompat description,
                int index)
```

Adds a queue item from the given`description`at the specified position in the play queue of this session. Shifts the queue item currently at that position (if any) and any subsequent queue items to the right (adds one to their indices). Not all sessions may support this. To know whether the session supports this, get the session's flags with[getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())and check that the flag[FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)is set.

<br />

|                                                                                                                                                                Parameters                                                                                                                                                                ||
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `description` | `MediaDescriptionCompat`: The[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)for creating the[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)to be inserted. <br /> |
| `index`       | `int`: The index at which the created[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)is to be inserted. <br />                                                                                                                       |

|                                 Throws                                 ||
|---------------------------------|---------------------------------------|
| `UnsupportedOperationException` | If this session doesn't support this. |

**See also:**

- [getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())
- [FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)  

### adjustVolume

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void adjustVolume (int direction,
                int flags)
```

Adjusts the volume of the output this session is playing on. The direction must be one of[ADJUST_LOWER](https://developer.android.com/reference/android/media/AudioManager.html#ADJUST_LOWER),[ADJUST_RAISE](https://developer.android.com/reference/android/media/AudioManager.html#ADJUST_RAISE), or[ADJUST_SAME](https://developer.android.com/reference/android/media/AudioManager.html#ADJUST_SAME). The command will be ignored if the session does not support[VOLUME_CONTROL_RELATIVE](https://developer.android.com/reference/android/support/v4/media/VolumeProviderCompat#VOLUME_CONTROL_RELATIVE)or[VOLUME_CONTROL_ABSOLUTE](https://developer.android.com/reference/android/support/v4/media/VolumeProviderCompat#VOLUME_CONTROL_ABSOLUTE). The flags in[AudioManager](https://developer.android.com/reference/android/media/AudioManager.html)may be used to affect the handling.

<br />

|                            Parameters                             ||
|-------------|------------------------------------------------------|
| `direction` | `int`: The direction to adjust the volume in. <br /> |
| `flags`     | `int`: Any flags to pass with the command. <br />    |

**See also:**

- [getPlaybackInfo()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackInfo())  

### dispatchMediaButtonEvent

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean dispatchMediaButtonEvent (KeyEvent keyEvent)
```

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

<br />

|                             Parameters                             ||
|------------|--------------------------------------------------------|
| `keyEvent` | `KeyEvent`: The media button event to dispatch. <br /> |

|                                    Returns                                    ||
|-----------|--------------------------------------------------------------------|
| `boolean` | true if the event was sent to the session, false otherwise. <br /> |

### getExtras

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Bundle getExtras ()
```

Gets the extras for this session.

<br />

|                                     Returns                                      ||
|--------------------------------------------------------------------------|--------|
| [Bundle](https://developer.android.com/reference/android/os/Bundle.html) | <br /> |

### getFlags

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
long getFlags ()
```

Gets the flags for this session. Flags are defined in[MediaSessionCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat).

<br />

|                         Returns                          ||
|--------|--------------------------------------------------|
| `long` | The current set of flags for the session. <br /> |

### getMediaController

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
Object getMediaController ()
```

Gets the underlying framework[MediaController](https://developer.android.com/reference/android/media/session/MediaController.html)object.

This method is only supported on API 21+.

<br />

<br />

|                                                                           Returns                                                                            ||
|----------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| `Object` | The underlying[MediaController](https://developer.android.com/reference/android/media/session/MediaController.html)object, or null if none. <br /> |

### getMediaController

added in[version 25.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaControllerCompat getMediaController (Activity activity)
```

Retrieves the[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)set in the activity by[setMediaController(Activity, MediaControllerCompat)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat))for sending media key and volume events.

This is compatible with[getMediaController()](https://developer.android.com/reference/android/app/Activity.html#getMediaController()).

<br />

<br />

|                                           Parameters                                            ||
|------------|-------------------------------------------------------------------------------------|
| `activity` | `Activity`: The activity to get the media controller from, must not be null. <br /> |

|                                                                                   Returns                                                                                   ||
|-------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------|
| [MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat) | The controller which should receive events. <br /> |

**See also:**

- [setMediaController(Activity, MediaControllerCompat)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat))  

### getMetadata

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaMetadataCompat getMetadata ()
```

Gets the current metadata for this session.

<br />

|                                                                        Returns                                                                         ||
|-------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| [MediaMetadataCompat](https://developer.android.com/reference/android/support/v4/media/MediaMetadataCompat) | The current MediaMetadata or null. <br /> |

### getPackageName

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
String getPackageName ()
```

Gets the session owner's package name.

<br />

|                          Returns                           ||
|----------|--------------------------------------------------|
| `String` | The package name of of the session owner. <br /> |

### getPlaybackInfo

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaControllerCompat.PlaybackInfo getPlaybackInfo ()
```

Gets the current playback info for this session.

<br />

|                                                                                           Returns                                                                                            ||
|---------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| [MediaControllerCompat.PlaybackInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo) | The current playback info or null. <br /> |

### getPlaybackState

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
PlaybackStateCompat getPlaybackState ()
```

Gets the current playback state for this session.

If the session is not ready,[getExtras()](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#getExtras())on the result of this method may return null.

<br />

<br />

|                                                                            Returns                                                                            ||
|---------------------------------------------------------------------------------------------------------------------|------------------------------------------|
| [PlaybackStateCompat](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat) | The current PlaybackState or null <br /> |

**See also:**

- [isSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())
- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### getQueue

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
List<MediaSessionCompat.QueueItem> getQueue ()
```

Gets the current play queue for this session if one is set. If you only care about the current item[getMetadata()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMetadata())should be used.

<br />

|                                                                                         Returns                                                                                         ||
|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|
| `List<`[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)`>` | The current play queue or null. <br /> |

### getQueueTitle

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
CharSequence getQueueTitle ()
```

Gets the queue title for this session.

<br />

|        Returns         ||
|----------------|--------|
| `CharSequence` | <br /> |

### getRatingType

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getRatingType ()
```

Gets the rating type supported by the session. One of:

- [RATING_NONE](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_NONE)
- [RATING_HEART](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_HEART)
- [RATING_THUMB_UP_DOWN](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_THUMB_UP_DOWN)
- [RATING_3_STARS](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_3_STARS)
- [RATING_4_STARS](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_4_STARS)
- [RATING_5_STARS](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_5_STARS)
- [RATING_PERCENTAGE](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_PERCENTAGE)

If the session is not ready, it will return[RATING_NONE](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_NONE).

<br />

<br />

|                                                                                                 Returns                                                                                                 ||
|-------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `int` | The supported rating type, or[RATING_NONE](https://developer.android.com/reference/android/support/v4/media/RatingCompat#RATING_NONE)if the value is not set or the session is not ready. <br /> |

**See also:**

- [isSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())
- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### getRepeatMode

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getRepeatMode ()
```

Gets the repeat mode for this session.

<br />

|                                                                                                                                                                                    Returns                                                                                                                                                                                     ||
|-------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `int` | The latest repeat mode set to the session,[REPEAT_MODE_NONE](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#REPEAT_MODE_NONE)if not set, or[REPEAT_MODE_INVALID](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#REPEAT_MODE_INVALID)if the session is not ready yet. <br /> |

**See also:**

- [isSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())
- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### getSessionActivity

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
PendingIntent getSessionActivity ()
```

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

<br />

|                                                                                                    Returns                                                                                                    ||
|-----------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|
| [PendingIntent](https://developer.android.com/reference/android/app/PendingIntent.html) | A[PendingIntent](https://developer.android.com/reference/android/app/PendingIntent.html)to launch UI or null. <br /> |

### getSessionToken

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaSessionCompat.Token getSessionToken ()
```

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

<br />

|                                                                          Returns                                                                           ||
|-------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
| [MediaSessionCompat.Token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token) | The session's token. <br /> |

### getShuffleMode

added in[version 26.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
int getShuffleMode ()
```

Gets the shuffle mode for this session.

<br />

|                                                                                                                                                                                              Returns                                                                                                                                                                                               ||
|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `int` | The latest shuffle mode set to the session, or[SHUFFLE_MODE_NONE](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#SHUFFLE_MODE_NONE)if disabled or not set, or[SHUFFLE_MODE_INVALID](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat#SHUFFLE_MODE_INVALID)if the session is not ready yet. <br /> |

**See also:**

- [isSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())
- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### getTransportControls

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
MediaControllerCompat.TransportControls getTransportControls ()
```

Gets a[MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls)instance for this session.

<br />

|                                                                                         Returns                                                                                         ||
|-------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
| [MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls) | A controls instance <br /> |

### isCaptioningEnabled

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean isCaptioningEnabled ()
```

Returns whether captioning is enabled for this session.

If the session is not ready, it will return a`false`.

<br />

<br />

|                                     Returns                                     ||
|-----------|----------------------------------------------------------------------|
| `boolean` | `true`if captioning is enabled,`false`if disabled or not set. <br /> |

**See also:**

- [isSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())
- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### isSessionReady

added in[version 27.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
boolean isSessionReady ()
```

Returns whether the session is ready or not.

If the session is not ready, following methods can work incorrectly.

- [getPlaybackState()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackState())
- [getRatingType()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRatingType())
- [getRepeatMode()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRepeatMode())
- [getShuffleMode()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getShuffleMode())
- [isCaptioningEnabled()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isCaptioningEnabled())

<br />

<br />

|                             Returns                              ||
|-----------|-------------------------------------------------------|
| `boolean` | true if the session is ready, false otherwise. <br /> |

**See also:**

- [onSessionReady()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady())  

### registerCallback

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
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.

<br />

|                                               Parameters                                               ||
|------------|--------------------------------------------------------------------------------------------|
| `callback` | `MediaControllerCompat.Callback`: The callback object, must not be null. <br />            |
| `handler`  | `Handler`: The handler to post updates on. If null the callers thread will be used. <br /> |

### registerCallback

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void registerCallback (MediaControllerCompat.Callback callback)
```

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

<br />

|                                         Parameters                                          ||
|------------|---------------------------------------------------------------------------------|
| `callback` | `MediaControllerCompat.Callback`: The callback object, must not be null. <br /> |

### removeQueueItem

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void removeQueueItem (MediaDescriptionCompat description)
```

Removes the first occurrence of the specified[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)with the given[description](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)in the play queue of the associated session. Not all sessions may support this. To know whether the session supports this, get the session's flags with[getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())and check that the flag[FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)is set.

<br />

|                                                                                                                                                               Parameters                                                                                                                                                                ||
|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `description` | `MediaDescriptionCompat`: The[MediaDescriptionCompat](https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat)for denoting the[MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)to be removed. <br /> |

|                                 Throws                                 ||
|---------------------------------|---------------------------------------|
| `UnsupportedOperationException` | If this session doesn't support this. |

**See also:**

- [getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())
- [FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)  

### removeQueueItemAt

added in[version 25.4.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void removeQueueItemAt (int index)
```

<br />

**This method was deprecated in API level 26.1.0.**   
Use[removeQueueItem(MediaDescriptionCompat)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat))instead.

Removes an queue item at the specified position in the play queue of this session. Not all sessions may support this. To know whether the session supports this, get the session's flags with[getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())and check that the flag[FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)is set.

<br />

|                           Parameters                           ||
|---------|-------------------------------------------------------|
| `index` | `int`: The index of the element to be removed. <br /> |

|                                 Throws                                 ||
|---------------------------------|---------------------------------------|
| `UnsupportedOperationException` | If this session doesn't support this. |

**See also:**

- [getFlags()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())
- [FLAG_HANDLES_QUEUE_COMMANDS](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS)  

### sendCommand

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
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.

<br />

|                                Parameters                                 ||
|-----------|----------------------------------------------------------------|
| `command` | `String`: The command to send <br />                           |
| `params`  | `Bundle`: Any parameters to include with the command <br />    |
| `cb`      | `ResultReceiver`: The callback to receive the result on <br /> |

### setMediaController

added in[version 25.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void setMediaController (Activity activity,
                MediaControllerCompat mediaController)
```

Sets a[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)in the`activity`for later retrieval via[getMediaController(Activity)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity)).

This is compatible with[setMediaController(MediaController)](https://developer.android.com/reference/android/app/Activity.html#setMediaController(android.media.session.MediaController)). If`activity`inherits[FragmentActivity](https://developer.android.com/reference/android/support/v4/app/FragmentActivity), the`mediaController`will be saved in the`activity`. In addition to that, on API 21 and later,[setMediaController(MediaController)](https://developer.android.com/reference/android/app/Activity.html#setMediaController(android.media.session.MediaController))will be called.

<br />

<br />

|                                                                        Parameters                                                                         ||
|-------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| `activity`        | `Activity`: The activity to set the`mediaController`in, must not be null. <br />                                                       |
| `mediaController` | `MediaControllerCompat`: The controller for the session which should receive media keys and volume changes on API 21 and later. <br /> |

**See also:**

- [getMediaController(Activity)](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity))
- [setMediaController(android.media.session.MediaController)](https://developer.android.com/https://developer.android.com/reference/android/app/Activity#setMediaController(android.media.session.MediaController))  

### setVolumeTo

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void setVolumeTo (int value,
                int flags)
```

Sets the volume of the output this session is playing on. The command will be ignored if it does not support[VOLUME_CONTROL_ABSOLUTE](https://developer.android.com/reference/android/support/v4/media/VolumeProviderCompat#VOLUME_CONTROL_ABSOLUTE). The flags in[AudioManager](https://developer.android.com/reference/android/media/AudioManager.html)may be used to affect the handling.

<br />

|                                                                         Parameters                                                                          ||
|---------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| `value` | `int`: The value to set it to, between 0 and the reported max. <br />                                                                              |
| `flags` | `int`: Flags from[AudioManager](https://developer.android.com/reference/android/media/AudioManager.html)to include with the volume request. <br /> |

**See also:**

- [getPlaybackInfo()](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackInfo())  

### unregisterCallback

added in[version 22.1.0](https://developer.android.com/topic/libraries/support-library/revisions)  

```
void unregisterCallback (MediaControllerCompat.Callback callback)
```

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

<br />

|                                 Parameters                                  ||
|------------|-----------------------------------------------------------------|
| `callback` | `MediaControllerCompat.Callback`: The callback to remove <br /> |

-

  ## Interfaces

  - [MediaSessionCompat.OnActiveChangeListener](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.OnActiveChangeListener)
-

  ## Classes

  - [MediaButtonReceiver](https://developer.android.com/reference/android/support/v4/media/session/MediaButtonReceiver)
  - [MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat)
  - [MediaControllerCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback)
  - [MediaControllerCompat.PlaybackInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo)
  - [MediaControllerCompat.TransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls)
  - [MediaSessionCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat)
  - [MediaSessionCompat.Callback](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Callback)
  - [MediaSessionCompat.QueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem)
  - [MediaSessionCompat.Token](https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token)
  - [ParcelableVolumeInfo](https://developer.android.com/reference/android/support/v4/media/session/ParcelableVolumeInfo)
  - [PlaybackStateCompat](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat)
  - [PlaybackStateCompat.Builder](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat.Builder)
  - [PlaybackStateCompat.CustomAction](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat.CustomAction)
  - [PlaybackStateCompat.CustomAction.Builder](https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat.CustomAction.Builder)