# MediaController2.Builder

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

# Builder

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/android/media/MediaController2.Builder "View this page in Java")  

```
class Builder
```

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

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.

Builder for[MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2).

Any incoming event from the[MediaSession2](https://developer.android.com/reference/kotlin/android/media/MediaSession2)will be handled on the callback executor. If it's not set,[Context.getMainExecutor()](https://developer.android.com/reference/kotlin/android/content/Context.html#getMainExecutor())will be used by default.

## Summary

|                                                                                                                                                                                                                                             Public constructors                                                                                                                                                                                                                                             ||
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| [Builder](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#Builder(android.content.Context,%20android.media.Session2Token))`(`context:` `[Context](https://developer.android.com/reference/kotlin/android/content/Context.html#)`, `token:` `[Session2Token](https://developer.android.com/reference/kotlin/android/media/Session2Token)`)` Creates a builder for[MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2). |

|                                                                                                                                                                                                                                                                                                                            Public methods                                                                                                                                                                                                                                                                                                                             ||
|--------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2)                  | [build](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#build())`()` Build[MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2).                                                                                                                                                                                                                                                                                                                                |
| [MediaController2.Builder](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#) | [setConnectionHints](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#setConnectionHints(android.os.Bundle))`(`connectionHints:` `[Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html#)`)` Set the connection hints for the controller.                                                                                                                                                                                                                                           |
| [MediaController2.Builder](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#) | [setControllerCallback](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#setControllerCallback(java.util.concurrent.Executor,%20android.media.MediaController2.ControllerCallback))`(`executor:` `[Executor](https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html#)`, `callback:` `[MediaController2.ControllerCallback](https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback)`)` Set callback for the controller and its executor. |

## Public constructors

### Builder

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

```
Builder(
    context: Context, 
    token: Session2Token)
```

Creates a builder for[MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2).

|                                                                              Parameters                                                                               ||
|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `context` | [Context](https://developer.android.com/reference/kotlin/android/content/Context.html#):context This value cannot be`null`.                                |
| `token`   | [Session2Token](https://developer.android.com/reference/kotlin/android/media/Session2Token):token of the session to connect to This value cannot be`null`. |

## Public methods

### build

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

```
fun build(): MediaController2
```

Build[MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2).

|                                                                     Return                                                                      ||
|---------------------------------------------------------------------------------------------------|----------------------------------------------|
| [MediaController2](https://developer.android.com/reference/kotlin/android/media/MediaController2) | a new controller This value cannot be`null`. |

### setConnectionHints

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

```
fun setConnectionHints(connectionHints: Bundle): MediaController2.Builder
```

Set the connection hints for the controller.

`connectionHints`is a session-specific argument to send to the session when connecting. The contents of this bundle may affect the connection result.

An[IllegalArgumentException](https://developer.android.com/reference/kotlin/java/lang/IllegalArgumentException.html#)will be thrown if the bundle contains any non-framework Parcelable objects.

|                                                                                  Parameters                                                                                  ||
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| `connectionHints` | [Bundle](https://developer.android.com/reference/kotlin/android/os/Bundle.html#):a bundle which contains the connection hints This value cannot be`null`. |

|                                                                                    Return                                                                                     ||
|--------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| [MediaController2.Builder](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#) | The Builder to allow chaining This value cannot be`null`. |

### setControllerCallback

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

```
fun setControllerCallback(
    executor: Executor, 
    callback: MediaController2.ControllerCallback
): MediaController2.Builder
```

Set callback for the controller and its executor.

|                                                                                            Parameters                                                                                             ||
|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `executor` | [Executor](https://developer.android.com/reference/kotlin/java/util/concurrent/Executor.html#):callback executor This value cannot be`null`.                                          |
| `callback` | [MediaController2.ControllerCallback](https://developer.android.com/reference/kotlin/android/media/MediaController2.ControllerCallback):session callback. This value cannot be`null`. |

|                                                                                    Return                                                                                     ||
|--------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| [MediaController2.Builder](https://developer.android.com/reference/kotlin/android/media/MediaController2.Builder#) | The Builder to allow chaining This value cannot be`null`. |