# MediaRouter.Callback

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

*** ** * ** ***


```
abstract class MediaRouter.Callback
```

<br />

*** ** * ** ***

Interface for receiving events about media routing changes. All methods of this interface will be called from the application's main thread.

A Callback will only receive events relevant to routes that the callback was registered for unless the `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#CALLBACK_FLAG_UNFILTERED_EVENTS()` flag was specified in `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#addCallback(androidx.mediarouter.media.MediaRouteSelector,androidx.mediarouter.media.MediaRouter.Callback,int)`.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#addCallback(androidx.mediarouter.media.MediaRouteSelector,androidx.mediarouter.media.MediaRouter.Callback,int)` |   |
| `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#removeCallback(androidx.mediarouter.media.MediaRouter.Callback)` |   |

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#Callback()()` |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onProviderAdded(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.ProviderInfo)(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo)` Called when a media route provider has been added. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onProviderChanged(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.ProviderInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo )` Called when a property of the indicated media route provider has changed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onProviderRemoved(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.ProviderInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo )` Called when a media route provider has been removed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteAdded(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` Called when a media route has been added. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteChanged(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` Called when a property of the indicated media route has changed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteConnected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.MediaRouter.RouteInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, connectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo )` Called when the supplied media route becomes connected. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteDisconnected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.MediaRouter.RouteInfo,int)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, disconnectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo?, requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Called when the supplied media route becomes disconnected. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRoutePresentationDisplayChanged(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo )` Called when a media route's presentation display changes. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteRemoved(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` Called when a media route has been removed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `[onRouteSelected](https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo))(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` **This function is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` instead. <br /> |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Called when the supplied media route becomes selected as the active route. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int,androidx.mediarouter.media.MediaRouter.RouteInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, selectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo )` Called when the supplied media route becomes selected as the active route, which may be different from the route requested by `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#selectRoute(androidx.mediarouter.media.MediaRouter.RouteInfo)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.SelectionInfo)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, selectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, selectionInfo: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/SelectionInfo )` Called when the selected route changes. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `[onRouteUnselected](https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo))(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` **This function is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` instead. <br /> |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)( router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo, reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Called when the supplied media route becomes unselected as the active route. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteVolumeChanged(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)(router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter, route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo)` Called when a media route's volume changes. |

## Public constructors

### Callback

Added in 1.1.0

```
Callback()
```

## Public functions

### onProviderAdded

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

```
fun onProviderAdded(router: MediaRouter, provider: MediaRouter.ProviderInfo): Unit
```

Called when a media route provider has been added.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo` | The provider that has become available for use. |

### onProviderChanged

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

```
fun onProviderChanged(
    router: MediaRouter,
    provider: MediaRouter.ProviderInfo
): Unit
```

Called when a property of the indicated media route provider has changed.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo` | The provider that was changed. |

### onProviderRemoved

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

```
fun onProviderRemoved(
    router: MediaRouter,
    provider: MediaRouter.ProviderInfo
): Unit
```

Called when a media route provider has been removed.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `provider: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.ProviderInfo` | The provider that has been removed from availability. |

### onRouteAdded

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

```
fun onRouteAdded(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

Called when a media route has been added.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has become available for use. |

### onRouteChanged

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

```
fun onRouteChanged(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

Called when a property of the indicated media route has changed.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that was changed. |

### onRouteConnected

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

```
fun onRouteConnected(
    router: MediaRouter,
    connectedRoute: MediaRouter.RouteInfo,
    requestedRoute: MediaRouter.RouteInfo
): Unit
```

Called when the supplied media route becomes connected.

Route connection doesn't affect the selected route. Apps can keep their selected routes while connecting to other routes.

The connected route could be different from the route requested by `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo#connect()`. This can happen when the `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaTransferReceiver` is enabled.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | the media router reporting the event. |
| `connectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | the route that has been connected. |
| `requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | the route that was requested to be connected. |

### onRouteDisconnected

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

```
fun onRouteDisconnected(
    router: MediaRouter,
    disconnectedRoute: MediaRouter.RouteInfo?,
    requestedRoute: MediaRouter.RouteInfo,
    reason: Int
): Unit
```

Called when the supplied media route becomes disconnected.

Route disconnection doesn't affect the selected route. Apps can keep their selected route while disconnecting other connected routes.

The disconnected route could be different from the route requested by `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo#connect()` or `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo#disconnect()`.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | the media router reporting the event. |
| `disconnectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo?` | the route that has been disconnected if the route has an established connection, or `null` if the connection hasn't been completed. |
| `requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | the route that originated the connection request through `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo#connect()` or originated the disconnection request through `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo#disconnect()`. |
| `reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the reason for disconnecting the route. |

### onRoutePresentationDisplayChanged

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

```
fun onRoutePresentationDisplayChanged(
    router: MediaRouter,
    route: MediaRouter.RouteInfo
): Unit
```

Called when a media route's presentation display changes.

This method is called whenever the route's presentation display becomes available, is removed or has changes to some of its properties (such as its size).

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route whose presentation display changed. |

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

### onRouteRemoved

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

```
fun onRouteRemoved(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

Called when a media route has been removed.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been removed from availability. |

### onRouteSelected

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

```
fun [onRouteSelected](https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo))(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
>
> Use `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` instead.

Called when the supplied media route becomes selected as the active route.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been selected. |

### onRouteSelected

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

```
fun onRouteSelected(
    router: MediaRouter,
    route: MediaRouter.RouteInfo,
    reason: Int
): Unit
```

Called when the supplied media route becomes selected as the active route.

The reason provided will be one of the following:

- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_UNKNOWN()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_DISCONNECTED()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_STOPPED()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_ROUTE_CHANGED()`

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been selected. |
| `reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The reason for unselecting the previous route. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.SelectionInfo)` |   |

### onRouteSelected

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

```
fun onRouteSelected(
    router: MediaRouter,
    selectedRoute: MediaRouter.RouteInfo,
    reason: Int,
    requestedRoute: MediaRouter.RouteInfo
): Unit
```

Called when the supplied media route becomes selected as the active route, which may be different from the route requested by `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#selectRoute(androidx.mediarouter.media.MediaRouter.RouteInfo)`. That can happen when `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaTransferReceiver` is enabled. The default implementation calls `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` with the actually selected route.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `selectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been selected. |
| `reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The reason for unselecting the previous route. |
| `requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that was requested to be selected. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteSelected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.MediaRouter.RouteInfo,androidx.mediarouter.media.SelectionInfo)` |   |

### onRouteSelected

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

```
fun onRouteSelected(
    router: MediaRouter,
    selectedRoute: MediaRouter.RouteInfo,
    requestedRoute: MediaRouter.RouteInfo,
    selectionInfo: SelectionInfo
): Unit
```

Called when the selected route changes.

The `selectedRoute` and the `requestedRoute` may be different. For example, when dynamic group route controlling is enabled (see `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouteProviderDescriptor#supportsDynamicGroupRoute()`). The requested route is the `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` passed to `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#selectRoute(androidx.mediarouter.media.MediaRouter.RouteInfo)`. The selected route, on the other hand, represents the created dynamic group, whose composing routes are available via `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.GroupRouteInfo#getRoutesInGroup()`. This enables the client to add other routes (beyond the requested route) to the selected route group.

The selected route matches the requested route when dynamic groups are not `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouteProviderDescriptor#supportsDynamicGroupRoute()`.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `selectedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The selected route, which may differ from the requested route. |
| `requestedRoute: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that was requested to be selected (for example, using `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#selectRoute(androidx.mediarouter.media.MediaRouter.RouteInfo)`). |
| `selectionInfo: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/SelectionInfo` | Information about the route selection. |

### onRouteUnselected

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

```
fun [onRouteUnselected](https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo))(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

> [!CAUTION]
> **This function is deprecated.**   
>
> Use `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` instead.

Called when the supplied media route becomes unselected as the active route. For detailed reason, override `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo,int)` instead.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been unselected. |

### onRouteUnselected

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

```
fun onRouteUnselected(
    router: MediaRouter,
    route: MediaRouter.RouteInfo,
    reason: Int
): Unit
```

Called when the supplied media route becomes unselected as the active route. The default implementation calls `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.Callback#onRouteUnselected(androidx.mediarouter.media.MediaRouter,androidx.mediarouter.media.MediaRouter.RouteInfo)`.

The reason provided will be one of the following:

- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_UNKNOWN()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_DISCONNECTED()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_STOPPED()`
- `https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter#UNSELECT_REASON_ROUTE_CHANGED()`

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route that has been unselected. |
| `reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The reason for unselecting the route. |

### onRouteVolumeChanged

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

```
fun onRouteVolumeChanged(router: MediaRouter, route: MediaRouter.RouteInfo): Unit
```

Called when a media route's volume changes.

| Parameters |
|---|---|
| `router: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter` | The media router reporting the event. |
| `route: https://developer.android.com/reference/kotlin/androidx/mediarouter/media/MediaRouter.RouteInfo` | The route whose volume changed. |