# MediaControllerCompat

Artifact: [androidx.media:media](https://developer.android.com/jetpack/androidx/releases/media) [View Source](https://cs.android.com/search?q=file:android/support/v4/media/session/MediaControllerCompat.java+class:android.support.v4.media.session.MediaControllerCompat) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

*** ** * ** ***


```
public final class MediaControllerCompat
```

<br />

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
>
> androidx.media is deprecated. Please migrate to [androidx.media3](https://developer.android.com/media/media3).

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 `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 `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 `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 `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token` is not passed through a `https://developer.android.com/reference/android/support/v4/media/MediaBrowserCompat`:

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

## Summary

| ### Nested types |
|---|
| `public abstract class https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback implements https://developer.android.com/reference/android/os/IBinder.DeathRecipient.html` **This class is deprecated.** androidx.media is deprecated. <br /> |
| `public final class https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo` **This class is deprecated.** androidx.media is deprecated. <br /> |
| `public abstract class https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls` **This class is deprecated.** androidx.media is deprecated. <br /> |

| ### Public constructors |
|---|
| `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context,android.support.v4.media.session.MediaSessionCompat))( https://developer.android.com/reference/android/content/Context.html context, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat session )` **This method is deprecated.** Deprecated in Java |
| `[MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context,android.support.v4.media.session.MediaSessionCompat.Token))( https://developer.android.com/reference/android/content/Context.html context, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token sessionToken )` **This method is deprecated.** Deprecated in Java |

| ### Public methods |
|---|---|
| `void` | `[addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat))(https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat description)` **This method is deprecated.** Deprecated in Java |
| `void` | `[addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat,int))(https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat description, int index)` **This method is deprecated.** Deprecated in Java |
| `void` | `[adjustVolume](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#adjustVolume(int,int))(int direction, int flags)` **This method is deprecated.** Deprecated in Java |
| `boolean` | `[dispatchMediaButtonEvent](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#dispatchMediaButtonEvent(android.view.KeyEvent))(https://developer.android.com/reference/android/view/KeyEvent.html keyEvent)` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/android/os/Bundle.html` | `[getExtras](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getExtras())()` **This method is deprecated.** Deprecated in Java |
| `long` | `[getFlags](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/java/lang/Object.html` | `[getMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController())()` **This method is deprecated.** Deprecated in Java |
| `static 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))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/app/Activity.html activity)` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/android/support/v4/media/MediaMetadataCompat` | `[getMetadata](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMetadata())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/java/lang/String.html` | `[getPackageName](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPackageName())()` **This method is deprecated.** Deprecated in Java |
| `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())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat` | `[getPlaybackState](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackState())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/java/util/List.html<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())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/java/lang/CharSequence.html` | `[getQueueTitle](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getQueueTitle())()` **This method is deprecated.** Deprecated in Java |
| `int` | `[getRatingType](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRatingType())()` **This method is deprecated.** Deprecated in Java |
| `int` | `[getRepeatMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRepeatMode())()` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/android/app/PendingIntent.html` | `[getSessionActivity](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionActivity())()` **This method is deprecated.** Deprecated in Java |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | `[getSessionInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionInfo())()` **This method is deprecated.** Deprecated in Java |
| `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())()` **This method is deprecated.** Deprecated in Java |
| `int` | `[getShuffleMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getShuffleMode())()` **This method is deprecated.** Deprecated in Java |
| `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())()` **This method is deprecated.** Deprecated in Java |
| `boolean` | `[isCaptioningEnabled](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isCaptioningEnabled())()` **This method is deprecated.** Deprecated in Java |
| `boolean` | `[isSessionReady](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())()` **This method is deprecated.** Deprecated in Java |
| `void` | `[registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback)` **This method is deprecated.** Deprecated in Java |
| `void` | `[registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback,android.os.Handler))( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback, https://developer.android.com/reference/android/os/Handler.html handler )` **This method is deprecated.** Deprecated in Java |
| `void` | `[removeQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat))(https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat description)` **This method is deprecated.** Deprecated in Java |
| `void` | `[removeQueueItemAt](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItemAt(int))(int index)` **This method is deprecated.** Use `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat)` instead. <br /> |
| `void` | `[sendCommand](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#sendCommand(java.lang.String,android.os.Bundle,android.os.ResultReceiver))( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html command, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html params, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/ResultReceiver.html cb )` **This method is deprecated.** Deprecated in Java |
| `static void` | `[setMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity,android.support.v4.media.session.MediaControllerCompat))( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/app/Activity.html activity, https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat mediaController )` **This method is deprecated.** Deprecated in Java |
| `void` | `[setVolumeTo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setVolumeTo(int,int))(int value, int flags)` **This method is deprecated.** Deprecated in Java |
| `void` | `[unregisterCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#unregisterCallback(android.support.v4.media.session.MediaControllerCompat.Callback))(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback)` **This method is deprecated.** Deprecated in Java |

## Public constructors

### MediaControllerCompat

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public [MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context,android.support.v4.media.session.MediaSessionCompat))(
    Context context,
    @NonNull MediaSessionCompat session
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Creates a media controller from a session.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat session` | The session to be controlled. |

### MediaControllerCompat

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public [MediaControllerCompat](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#MediaControllerCompat(android.content.Context,android.support.v4.media.session.MediaSessionCompat.Token))(
    Context context,
    @NonNull MediaSessionCompat.Token sessionToken
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token sessionToken` | The token of the session to be controlled. |

## Public methods

### addQueueItem

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat))(MediaDescriptionCompat description)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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 `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` and check that the flag `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` is set.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat description` | The `https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat` for creating the `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem` to be inserted. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | If this session doesn't support this. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` |   |

### addQueueItem

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [addQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#addQueueItem(android.support.v4.media.MediaDescriptionCompat,int))(MediaDescriptionCompat description, int index)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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 `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` and check that the flag `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` is set.

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

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | If this session doesn't support this. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` |   |

### adjustVolume

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [adjustVolume](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#adjustVolume(int,int))(int direction, int flags)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `int direction` | The direction to adjust the volume in. |
| `int flags` | Any flags to pass with the command. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackInfo()` |   |

### dispatchMediaButtonEvent

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public boolean [dispatchMediaButtonEvent](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#dispatchMediaButtonEvent(android.view.KeyEvent))(KeyEvent keyEvent)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/view/KeyEvent.html keyEvent` | The media button event to dispatch. |

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

### getExtras

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public Bundle [getExtras](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getExtras())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the extras for this session.

### getFlags

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public long [getFlags](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Returns |
|---|---|
| `long` | The current set of flags for the session. |

### getMediaController

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public Object [getMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the underlying framework `https://developer.android.com/reference/android/media/session/MediaController.html` object.

This method is only supported on API 21+.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html` | The underlying `https://developer.android.com/reference/android/media/session/MediaController.html` object, or null if none. |

### getMediaController

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public static MediaControllerCompat [getMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity))(@NonNull Activity activity)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Retrieves the `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` set in the activity by `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 `https://developer.android.com/reference/android/app/Activity.html#getMediaController()`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/app/Activity.html activity` | The activity to get the media controller from, must not be null. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` | The controller which should receive events. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity,android.support.v4.media.session.MediaControllerCompat)` |   |

### getMetadata

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public MediaMetadataCompat [getMetadata](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMetadata())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the current metadata for this session.

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/MediaMetadataCompat` | The current MediaMetadata or null. |

### getPackageName

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public String [getPackageName](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPackageName())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the session owner's package name.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html` | The package name of of the session owner. |

### getPlaybackInfo

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

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

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the current playback info for this session.

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.PlaybackInfo` | The current playback info or null. |

### getPlaybackState

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public PlaybackStateCompat [getPlaybackState](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackState())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the current playback state for this session.

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

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/PlaybackStateCompat` | The current PlaybackState or null |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### getQueue

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public List<MediaSessionCompat.QueueItem> [getQueue](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getQueue())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Returns |
|---|---|
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem>` | The current play queue or null. |

### getQueueTitle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public CharSequence [getQueueTitle](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getQueueTitle())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the queue title for this session.

### getRatingType

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public int [getRatingType](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRatingType())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

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

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

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

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### getRepeatMode

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public int [getRepeatMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getRepeatMode())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the repeat mode for this session.

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

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### getSessionActivity

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public PendingIntent [getSessionActivity](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionActivity())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Returns |
|---|---|
| `https://developer.android.com/reference/android/app/PendingIntent.html` | A `https://developer.android.com/reference/android/app/PendingIntent.html` to launch UI or null. |

### getSessionInfo

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/media#1.2.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public @NonNull Bundle [getSessionInfo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionInfo())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the additional session information which was set when the session was created. The returned `https://developer.android.com/reference/android/os/Bundle.html` can include additional unchanging information about the session. For example, it can include the version of the session application, or other app-specific unchanging information.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | The additional session information, or `https://developer.android.com/reference/android/os/Bundle.html#EMPTY` if the session didn't set the information or if the session is not ready. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### getSessionToken

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public MediaSessionCompat.Token [getSessionToken](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getSessionToken())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.Token` | The session's token. |

### getShuffleMode

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public int [getShuffleMode](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getShuffleMode())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets the shuffle mode for this session.

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

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### getTransportControls

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public MediaControllerCompat.TransportControls [getTransportControls](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getTransportControls())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Gets a `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls` instance for this session.

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.TransportControls` | A controls instance |

### isCaptioningEnabled

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public boolean [isCaptioningEnabled](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isCaptioningEnabled())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Returns whether captioning is enabled for this session.

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

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

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### isSessionReady

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public boolean [isSessionReady](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#isSessionReady())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Returns whether the session is ready or not.

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

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

| Returns |
|---|---|
| `boolean` | true if the session is ready, false otherwise. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback#onSessionReady()` |   |

### registerCallback

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback))(@NonNull MediaControllerCompat.Callback callback)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback` | The callback object, must not be null. |

### registerCallback

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [registerCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback,android.os.Handler))(
    @NonNull MediaControllerCompat.Callback callback,
    Handler handler
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback` | The callback object, must not be null. |
| `https://developer.android.com/reference/android/os/Handler.html handler` | The handler to post updates on. If null the callers thread will be used. |

### removeQueueItem

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [removeQueueItem](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItem(android.support.v4.media.MediaDescriptionCompat))(MediaDescriptionCompat description)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Removes the first occurrence of the specified `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem` with the given `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 `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` and check that the flag `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` is set.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat description` | The `https://developer.android.com/reference/android/support/v4/media/MediaDescriptionCompat` for denoting the `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat.QueueItem` to be removed. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | If this session doesn't support this. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` |   |

### removeQueueItemAt

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0)

```
public void [removeQueueItemAt](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#removeQueueItemAt(int))(int index)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `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 `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` and check that the flag `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` is set.

| Parameters |
|---|---|
| `int index` | The index of the element to be removed. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` | If this session doesn't support this. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getFlags()` |   |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaSessionCompat#FLAG_HANDLES_QUEUE_COMMANDS()` |   |

### sendCommand

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [sendCommand](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#sendCommand(java.lang.String,android.os.Bundle,android.os.ResultReceiver))(
    @NonNull String command,
    @Nullable Bundle params,
    @Nullable ResultReceiver cb
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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 |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html command` | The command to send |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html params` | Any parameters to include with the command. Can be `null`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/ResultReceiver.html cb` | The callback to receive the result on. Can be `null`. |

### setMediaController

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public static void [setMediaController](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setMediaController(android.app.Activity,android.support.v4.media.session.MediaControllerCompat))(
    @NonNull Activity activity,
    MediaControllerCompat mediaController
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

On API 21 and later, `https://developer.android.com/reference/android/app/Activity.html#setMediaController(android.media.session.MediaController)` will also be called.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/app/Activity.html activity` | The activity to set the `mediaController` in, must not be null. |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat mediaController` | The controller for the session which should receive media keys and volume changes on API 21 and later. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getMediaController(android.app.Activity)` |   |
| `https://developer.android.com/reference/android/app/Activity.html#setMediaController(android.media.session.MediaController)` |   |

### setVolumeTo

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [setVolumeTo](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#setVolumeTo(int,int))(int value, int flags)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

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

| See also |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#getPlaybackInfo()` |   |

### unregisterCallback

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/media#1.1.0) Deprecated in [1.8.0](https://developer.android.com/jetpack/androidx/releases/media#1.8.0)

```
public void [unregisterCallback](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat#unregisterCallback(android.support.v4.media.session.MediaControllerCompat.Callback))(@NonNull MediaControllerCompat.Callback callback)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

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

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.Callback callback` | The callback to remove |