Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  
Deprecated in [API level 37](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# ControllerCallback

*** ** * ** ***

```
abstract class ControllerCallback
```

|---|---|
| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html) ||
| ↳ | [android.media.MediaController2.ControllerCallback](https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#) |

*** ** * ** ***

> [!CAUTION]
> **This class was deprecated in API level 37.**
>
> Use the Media3 support library's `androidx.media3.session.MediaController` instead.

This API is not generally intended for third party application developers. Use the [AndroidX](https://developer.android.com/jetpack/androidx.html) [Media3 session Library](https://developer.android.com/media/media3/session/control-playback) for consistent behavior across all devices.

Interface for listening to change in activeness of the `https://developer.android.com/reference/kotlin/android/media/MediaSession2`.

## Summary

| Public constructors ||
|---|---|
| `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#ControllerCallback()()` <br /> |

| Public methods ||
|---|---|
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#onCommandResult(android.media.MediaController2,%20kotlin.Any,%20android.media.Session2Command,%20android.media.Session2Command.Result)(controller: https://developer.android.com/reference/kotlin/android/media/MediaController2, token: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html, command: https://developer.android.com/reference/kotlin/android/media/Session2Command, result: https://developer.android.com/reference/kotlin/android/media/Session2Command.Result)` Called when the command sent to the connected session is finished. |
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#onConnected(android.media.MediaController2,%20android.media.Session2CommandGroup)(controller: https://developer.android.com/reference/kotlin/android/media/MediaController2, allowedCommands: https://developer.android.com/reference/kotlin/android/media/Session2CommandGroup)` Called when the controller is successfully connected to the session. |
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#onDisconnected(android.media.MediaController2)(controller: https://developer.android.com/reference/kotlin/android/media/MediaController2)` Called when the session refuses the controller or the controller is disconnected from the session. |
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#onPlaybackActiveChanged(android.media.MediaController2,%20kotlin.Boolean)(controller: https://developer.android.com/reference/kotlin/android/media/MediaController2, playbackActive: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)` Called when the session's playback activeness is changed. |
| open [Session2Command.Result](https://developer.android.com/reference/kotlin/android/media/Session2Command.Result)? | `https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback#onSessionCommand(android.media.MediaController2,%20android.media.Session2Command,%20android.os.Bundle)(controller: https://developer.android.com/reference/kotlin/android/media/MediaController2, command: https://developer.android.com/reference/kotlin/android/media/Session2Command, args: https://developer.android.com/reference/kotlin/android/os/Bundle.html#?)` Called when the connected session sent a session command. |

## Public constructors

### ControllerCallback

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
ControllerCallback()
```

## Public methods

### onCommandResult

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
open fun onCommandResult(
    controller: MediaController2, 
    token: Any, 
    command: Session2Command, 
    result: Session2Command.Result
): Unit
```

**Deprecated:** *Deprecated in Java.*

Called when the command sent to the connected session is finished.

| Parameters ||
|---|---|
| `controller` | [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2): the controller for this event. This value cannot be `null`. |
| `token` | [Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html): the token got from `https://developer.android.com/reference/kotlin/android/media/MediaController2#sendSessionCommand(android.media.Session2Command,%20android.os.Bundle)` This value cannot be `null`. |
| `command` | [Session2Command](https://developer.android.com/reference/kotlin/android/media/Session2Command): the session command. This value cannot be `null`. |
| `result` | [Session2Command.Result](https://developer.android.com/reference/kotlin/android/media/Session2Command.Result): the result of the session command. This value cannot be `null`. |

### onConnected

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
open fun onConnected(
    controller: MediaController2, 
    allowedCommands: Session2CommandGroup
): Unit
```

**Deprecated:** *Deprecated in Java.*

Called when the controller is successfully connected to the session. The controller becomes available afterwards.

| Parameters ||
|---|---|
| `controller` | [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2): the controller for this event. This value cannot be `null`. |
| `allowedCommands` | [Session2CommandGroup](https://developer.android.com/reference/kotlin/android/media/Session2CommandGroup): commands that's allowed by the session. This value cannot be `null`. |

### onDisconnected

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
open fun onDisconnected(controller: MediaController2): Unit
```

**Deprecated:** *Deprecated in Java.*

Called when the session refuses the controller or the controller is disconnected from the session. The controller becomes unavailable afterwards and the callback wouldn't be called.

It will be also called after the `https://developer.android.com/reference/kotlin/android/media/MediaController2#close()`, so you can put clean up code here. You don't need to call `https://developer.android.com/reference/kotlin/android/media/MediaController2#close()` after this.

| Parameters ||
|---|---|
| `controller` | [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2): the controller for this event. This value cannot be `null`. |

### onPlaybackActiveChanged

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
open fun onPlaybackActiveChanged(
    controller: MediaController2, 
    playbackActive: Boolean
): Unit
```

**Deprecated:** *Deprecated in Java.*

Called when the session's playback activeness is changed.

| Parameters ||
|---|---|
| `controller` | [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2): the controller for this event. This value cannot be `null`. |
| `playbackActive` | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html): `true` if the session's playback is active. `false` otherwise. |

**See Also**

- `https://developer.android.com/reference/kotlin/android/media/MediaController2#isPlaybackActive()`

### onSessionCommand

Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

```
open fun onSessionCommand(
    controller: MediaController2, 
    command: Session2Command, 
    args: Bundle?
): Session2Command.Result?
```

**Deprecated:** *Deprecated in Java.*

Called when the connected session sent a session command.

| Parameters ||
|---|---|
| `controller` | [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2): the controller for this event. This value cannot be `null`. |
| `command` | [Session2Command](https://developer.android.com/reference/kotlin/android/media/Session2Command): the session command. This value cannot be `null`. |
| `args` | [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html#)?: optional arguments. This value may be `null`. |

| Return ||
|---|---|
| `https://developer.android.com/reference/kotlin/android/media/Session2Command.Result?` | the result for the session command. If `null`, RESULT_INFO_SKIPPED will be sent to the session. |