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

# MediaRoute2Info.Builder

*** ** * ** ***

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


`
public
static
final

class
MediaRoute2Info.Builder
`


`

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


`

`


`

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

<br />

*** ** * ** ***

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

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#Builder(android.media.MediaRoute2Info)(https://developer.android.com/reference/android/media/MediaRoute2Info routeInfo) ` Constructor for builder to create `https://developer.android.com/reference/android/media/MediaRoute2Info` with existing `https://developer.android.com/reference/android/media/MediaRoute2Info` instance. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#Builder(java.lang.String,%20java.lang.CharSequence)(https://developer.android.com/reference/java/lang/String id, https://developer.android.com/reference/java/lang/CharSequence name) ` Constructor for builder to create `https://developer.android.com/reference/android/media/MediaRoute2Info`. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#addFeature(java.lang.String)(https://developer.android.com/reference/java/lang/String feature) ` Adds a feature for the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#addFeatures(java.util.Collection<java.lang.String>)(https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/lang/String> features) ` Adds features for the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#build()() ` Builds the `https://developer.android.com/reference/android/media/MediaRoute2Info`. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#clearFeatures()() ` Clears the features of the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setClientPackageName(java.lang.String)(https://developer.android.com/reference/java/lang/String packageName) ` Sets the package name of the app using the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setConnectionState(int)(int connectionState) ` Sets the route's connection state. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setDeduplicationIds(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> id) ` Sets the `https://developer.android.com/reference/android/media/MediaRoute2Info#getDeduplicationIds()` of the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setDescription(java.lang.CharSequence)(https://developer.android.com/reference/java/lang/CharSequence description) ` Sets the user-visible description of the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setExtras(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle extras) ` Sets a bundle of extras for the route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setIconUri(android.net.Uri)(https://developer.android.com/reference/android/net/Uri iconUri) ` Sets the URI of the icon representing this route. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> requiredPermissions) ` Limits the visibility of this route to holders of a set of permissions. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.List<java.util.Set<java.lang.String>>)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>> requiresOneOf) ` Limits the visibility of this route to holders of one of a set of permissions. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setSuitabilityStatus(int)(int suitabilityStatus) ` Sets route suitability status. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setType(int)(int type) ` Sets the route's type. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityPublic()() ` Sets the visibility of this route to public. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityRestricted(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> allowedPackages) ` Sets the visibility of this route to restricted. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityRestricted(java.util.Set<java.lang.String>,%20boolean)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> allowedPackages, boolean alsoAllowPrivileged) ` Sets the visibility of this route to restricted. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVolume(int)(int volume) ` Sets the route's current volume, or 0 if unknown. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVolumeHandling(int)(int volumeHandling) ` Sets the route's volume handling. |
| ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | ` https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVolumeMax(int)(int volumeMax) ` Sets the route's maximum volume, or 0 if unknown. |

| ### 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 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder (MediaRoute2Info routeInfo)
```

Constructor for builder to create `https://developer.android.com/reference/android/media/MediaRoute2Info` with existing
`https://developer.android.com/reference/android/media/MediaRoute2Info` instance.

<br />

| Parameters ||
|---|---|
| `routeInfo` | `MediaRoute2Info`: the existing instance to copy data from. This value cannot be `null`. <br /> |

### Builder

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

```
public Builder (String id, 
                CharSequence name)
```

Constructor for builder to create `https://developer.android.com/reference/android/media/MediaRoute2Info`.


In order to ensure ID uniqueness, the `https://developer.android.com/reference/android/media/MediaRoute2Info#getId()` of a route info
obtained from `https://developer.android.com/reference/android/media/MediaRouter2` can be different from what was set in
`https://developer.android.com/reference/android/media/MediaRoute2ProviderService`.

<br />

<br />

| Parameters ||
|---|---|
| `id` | `String`: The ID of the route. Must not be empty. This value cannot be `null`. <br /> |
| `name` | `CharSequence`: The user-visible name of the route. This value cannot be `null`. <br /> |

## Public methods

### addFeature

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

```
public MediaRoute2Info.Builder addFeature (String feature)
```

Adds a feature for the route.

<br />

| Parameters ||
|---|---|
| `feature` | `String`: a feature that the route has. May be one of predefined features such as `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_LIVE_AUDIO`, `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_LIVE_VIDEO` or `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_REMOTE_PLAYBACK` or a custom feature defined by a provider. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#addFeatures(java.util.Collection<java.lang.String>)`

### addFeatures

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

```
public MediaRoute2Info.Builder addFeatures (Collection<String> features)
```

Adds features for the route. A route must support at least one route type.

<br />

| Parameters ||
|---|---|
| `features` | `Collection`: features that the route has. May include predefined features such as `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_LIVE_AUDIO`, `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_LIVE_VIDEO` or `https://developer.android.com/reference/android/media/MediaRoute2Info#FEATURE_REMOTE_PLAYBACK` or custom features defined by a provider. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#addFeature(java.lang.String)`

### build

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

```
public MediaRoute2Info build ()
```

Builds the `https://developer.android.com/reference/android/media/MediaRoute2Info`.

<br />

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if no features are added. |

### clearFeatures

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

```
public MediaRoute2Info.Builder clearFeatures ()
```

Clears the features of the route. A route must support at least one route type.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setClientPackageName

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

```
public MediaRoute2Info.Builder setClientPackageName (String packageName)
```

Sets the package name of the app using the route.

<br />

| Parameters ||
|---|---|
| `packageName` | `String`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setConnectionState

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

```
public MediaRoute2Info.Builder setConnectionState (int connectionState)
```

Sets the route's connection state.

`https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_DISCONNECTED`,
`https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_CONNECTING`, or
`https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_CONNECTED`.

<br />

| Parameters ||
|---|---|
| `connectionState` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_DISCONNECTED` - `https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_CONNECTING` - `https://developer.android.com/reference/android/media/MediaRoute2Info#CONNECTION_STATE_CONNECTED` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setDeduplicationIds

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

```
public MediaRoute2Info.Builder setDeduplicationIds (Set<String> id)
```

Sets the `https://developer.android.com/reference/android/media/MediaRoute2Info#getDeduplicationIds()` of the route.

<br />

| Parameters ||
|---|---|
| `id` | `Set`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setDescription

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

```
public MediaRoute2Info.Builder setDescription (CharSequence description)
```

Sets the user-visible description of the route.

<br />

| Parameters ||
|---|---|
| `description` | `CharSequence`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setExtras

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

```
public MediaRoute2Info.Builder setExtras (Bundle extras)
```

Sets a bundle of extras for the route.


Note: The extras will not affect the result of `https://developer.android.com/reference/android/media/MediaRoute2Info#equals(java.lang.Object)`.

<br />

| Parameters ||
|---|---|
| `extras` | `Bundle`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setIconUri

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

```
public MediaRoute2Info.Builder setIconUri (Uri iconUri)
```

Sets the URI of the icon representing this route.


This icon will be used in picker UIs if available.


The URI must be one of the following formats:

- content (`https://developer.android.com/reference/android/content/ContentResolver#SCHEME_CONTENT`)
- android.resource (`https://developer.android.com/reference/android/content/ContentResolver#SCHEME_ANDROID_RESOURCE`)
- file (`https://developer.android.com/reference/android/content/ContentResolver#SCHEME_FILE`)

<br />

<br />

<br />

| Parameters ||
|---|---|
| `iconUri` | `Uri`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setRequiredPermissions

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

```
public MediaRoute2Info.Builder setRequiredPermissions (Set<String> requiredPermissions)
```

Limits the visibility of this route to holders of a set of permissions.

Calls to this method override any previous calls of
`https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.Set<java.lang.String>)` or `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.List<java.util.Set<java.lang.String>>)`.

<br />

| Parameters ||
|---|---|
| `requiredPermissions` | `Set`: the list of all permissions which must be held in order to see this route. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setRequiredPermissions

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

```
public MediaRoute2Info.Builder setRequiredPermissions (List<Set<String>> requiresOneOf)
```

Limits the visibility of this route to holders of one of a set of permissions.

Calls to this method override any previous calls of
`https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.Set<java.lang.String>)` or `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setRequiredPermissions(java.util.List<java.util.Set<java.lang.String>>)`.

<br />

| Parameters ||
|---|---|
| `requiresOneOf` | `List`: a list of Sets of permissions. Holding all permissions in at least one of the Sets is required for the route to be visible. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setSuitabilityStatus

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

```
public MediaRoute2Info.Builder setSuitabilityStatus (int suitabilityStatus)
```

Sets route suitability status.

The default value is `https://developer.android.com/reference/android/media/MediaRoute2Info#SUITABILITY_STATUS_SUITABLE_FOR_DEFAULT_TRANSFER`.

Apps are not supposed to set `https://developer.android.com/reference/android/media/MediaRoute2Info#SUITABILITY_STATUS_NOT_SUITABLE_FOR_TRANSFER`. Publishing a non-system
route with such status throws `https://developer.android.com/reference/java/lang/SecurityException`.

<br />

| Parameters ||
|---|---|
| `suitabilityStatus` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/media/MediaRoute2Info#SUITABILITY_STATUS_SUITABLE_FOR_DEFAULT_TRANSFER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#SUITABILITY_STATUS_SUITABLE_FOR_MANUAL_TRANSFER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#SUITABILITY_STATUS_NOT_SUITABLE_FOR_TRANSFER` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setType

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

```
public MediaRoute2Info.Builder setType (int type)
```

Sets the route's type.

<br />

| Parameters ||
|---|---|
| `type` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_UNKNOWN` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_BUILTIN_SPEAKER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_WIRED_HEADSET` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_WIRED_HEADPHONES` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_BLUETOOTH_A2DP` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_HDMI` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_HDMI_ARC` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_HDMI_EARC` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_LINE_DIGITAL` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_LINE_ANALOG` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_AUX_LINE` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_USB_DEVICE` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_USB_ACCESSORY` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_DOCK` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_USB_HEADSET` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_HEARING_AID` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_BLE_HEADSET` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_TV` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_SPEAKER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_AUDIO_VIDEO_RECEIVER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_TABLET` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_TABLET_DOCKED` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_COMPUTER` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_GAME_CONSOLE` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_CAR` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_SMARTWATCH` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_REMOTE_SMARTPHONE` - `https://developer.android.com/reference/android/media/MediaRoute2Info#TYPE_GROUP` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaRoute2Info#getType()`

### setVisibilityPublic

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

```
public MediaRoute2Info.Builder setVisibilityPublic ()
```

Sets the visibility of this route to public.

By default, unless you call `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityRestricted(java.util.Set<java.lang.String>)`, the new route will be
public.

Public routes are visible to any application with a matching `https://developer.android.com/reference/android/media/RouteDiscoveryPreference#getPreferredFeatures()`.

Calls to this method override previous calls to `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityPublic()` and
`https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityRestricted(java.util.Set<java.lang.String>)`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setVisibilityRestricted

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

```
public MediaRoute2Info.Builder setVisibilityRestricted (Set<String> allowedPackages)
```

Sets the visibility of this route to restricted.

Routes with restricted visibility are only visible to its publisher application and
applications whose package name is included in the provided `allowedPackages` set
with a matching `https://developer.android.com/reference/android/media/RouteDiscoveryPreference#getPreferredFeatures()`.

Calls to this method override previous calls to `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityPublic()` and
`https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityRestricted(java.util.Set<java.lang.String>)`.

<br />

| Parameters ||
|---|---|
| `allowedPackages` | `Set`: set of package names which are allowed to see this route. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder#setVisibilityPublic()`

### setVisibilityRestricted

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

```
public MediaRoute2Info.Builder setVisibilityRestricted (Set<String> allowedPackages, 
                boolean alsoAllowPrivileged)
```

Sets the visibility of this route to restricted.

<br />

| Parameters ||
|---|---|
| `allowedPackages` | `Set`: set of package names which are allowed to see this route. This value cannot be `null`. <br /> |
| `alsoAllowPrivileged` | `boolean`: whether packages not explicitly listed in allowedPackages, but holding `https://developer.android.com/reference/android/media/MediaRouter2#getInstance(android.content.Context,%20java.lang.String,%20java.util.concurrent.Executor,%20java.lang.Runnable)`, can also see this route. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setVolume

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

```
public MediaRoute2Info.Builder setVolume (int volume)
```

Sets the route's current volume, or 0 if unknown.

<br />

| Parameters ||
|---|---|
| `volume` | `int` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setVolumeHandling

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

```
public MediaRoute2Info.Builder setVolumeHandling (int volumeHandling)
```

Sets the route's volume handling.

<br />

| Parameters ||
|---|---|
| `volumeHandling` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/media/MediaRoute2Info#PLAYBACK_VOLUME_FIXED` - `https://developer.android.com/reference/android/media/MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |

### setVolumeMax

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

```
public MediaRoute2Info.Builder setVolumeMax (int volumeMax)
```

Sets the route's maximum volume, or 0 if unknown.

<br />

| Parameters ||
|---|---|
| `volumeMax` | `int` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaRoute2Info.Builder` | This value cannot be `null`. <br /> |