Added in [API level 29](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
37](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/media/MediaController2.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/media/MediaController2.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/MediaController2.Builder#inhmethods)

# MediaController2.Builder

*** ** * ** ***


`
public
static
final

class
MediaController2.Builder
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.MediaController2.Builder |

<br />

*** ** * ** ***


**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)
[Media3 session
Library](https://developer.android.com/media/media3/session/control-playback) for consistent behavior across all devices.


Builder for `https://developer.android.com/reference/android/media/MediaController2`.


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

## Summary

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

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

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### Builder

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

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

Creates a builder for `https://developer.android.com/reference/android/media/MediaController2`.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: context. This value cannot be `null`. <br /> |
| `token` | `Session2Token`: token of the session to connect to. This value cannot be `null`. <br /> |

## Public methods

### build

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

```
public MediaController2 build ()
```

Build `https://developer.android.com/reference/android/media/MediaController2`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaController2` | a new controller. This value cannot be `null`. <br /> |

### setConnectionHints

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

```
public MediaController2.Builder setConnectionHints (Bundle connectionHints)
```

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 `https://developer.android.com/reference/java/lang/IllegalArgumentException` will be thrown if the bundle contains any
non-framework Parcelable objects.

<br />

| Parameters ||
|---|---|
| `connectionHints` | `Bundle`: a bundle which contains the connection hints. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaController2.Builder` | The Builder to allow chaining. This value cannot be `null`. <br /> |

### setControllerCallback

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

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

Set callback for the controller and its executor.

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: callback executor. This value cannot be `null`. <br /> |
| `callback` | `MediaController2.ControllerCallback`: session callback. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaController2.Builder` | The Builder to allow chaining. This value cannot be `null`. <br /> |