# MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor

Artifact: [androidx.mediarouter:mediarouter](https://developer.android.com/jetpack/androidx/releases/mediarouter) [View Source](https://cs.android.com/search?q=file:androidx/mediarouter/media/MediaRouteProvider.java+class:androidx.mediarouter.media.MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

*** ** * ** ***


```
public final class MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor
```

<br />

*** ** * ** ***

Contains a route, its selection state and its capabilities.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor.Builder` Builder for `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor` |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#NOT_IN_GROUP() = 4` The route is not in a dynamic group. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#SELECTED() = 3` The route is selected. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#SELECTING() = 2` After a user selects a route, it might take some time for a provider to complete the operation. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#UNSELECTED() = 1` The route is unselected. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#UNSELECTING() = 0` After a user unselects a route, it might take some time for a provider to complete the operation. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteDescriptor` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#getRouteDescriptor()()` Gets this route's `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteDescriptor`. i.e. which route this info is for. |
| `int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#getSelectionState()()` Gets the selection state. |
| `boolean` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#isGroupable()()` Returns true if the route can be grouped into the dynamic group route. |
| `boolean` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#isTransferable()()` Returns true if the current dynamic group route can be transferred to this route. |
| `boolean` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#isUnselectable()()` Returns true if the route can be unselected. |

## Constants

### NOT_IN_GROUP

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

```
public static final int NOT_IN_GROUP = 4
```

The route is not in a dynamic group.

The NOT_IN_GROUP selection state is different from the UNSELECTED state. The former represents a route that is not in a dynamic group. The latter represents an unselected route which could be selected to be part of the dynamic group.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouter.GroupRouteInfo#getSelectionState(androidx.mediarouter.media.MediaRouter.RouteInfo)` |   |

### SELECTED

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

```
public static final int SELECTED = 3
```

The route is selected.

Select operation is done by the route provider.

### SELECTING

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

```
public static final int SELECTING = 2
```

After a user selects a route, it might take some time for a provider to complete the operation. This state is used in this between time. MediaRouter can either block the UI or show the route as checked.

### UNSELECTED

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

```
public static final int UNSELECTED = 1
```

The route is unselected.

Unselect operation is done by the route provider.

### UNSELECTING

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

```
public static final int UNSELECTING = 0
```

After a user unselects a route, it might take some time for a provider to complete the operation. This state is used in this between time. MediaRouter can either block the UI or show the route as unchecked.

## Public methods

### getRouteDescriptor

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

```
public @NonNull MediaRouteDescriptor getRouteDescriptor()
```

Gets this route's `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteDescriptor`. i.e. which route this info is for.

### getSelectionState

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

```
public int getSelectionState()
```

Gets the selection state.

### isGroupable

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

```
public boolean isGroupable()
```

Returns true if the route can be grouped into the dynamic group route.

Only applicable to unselected/unselecting routes. Note that this is NOT mutually exclusive with `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#isTransferable()`.

### isTransferable

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

```
public boolean isTransferable()
```

Returns true if the current dynamic group route can be transferred to this route.

Only applicable to unselected/unselecting routes. Note that this is NOT mutually exclusive with `https://developer.android.com/reference/androidx/mediarouter/media/MediaRouteProvider.DynamicGroupRouteController.DynamicRouteDescriptor#isGroupable()`.

### isUnselectable

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

```
public boolean isUnselectable()
```

Returns true if the route can be unselected.

For example, a static group has an old build which doesn't support dynamic group. All its members can't be removed.

Only applicable to selected/selecting routes.