# MediaRouteButtonKt

*** ** * ** ***


```
public final class MediaRouteButtonKt
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final void` | `@https://developer.android.com/reference/androidx/annotation/MainThread @https://developer.android.com/reference/androidx/media3/common/util/UnstableApi @https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html https://developer.android.com/reference/androidx/media3/cast/MediaRouteButtonKt#MediaRouteButton(androidx.compose.ui.Modifier,androidx.media3.cast.MediaRouteButtonState)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html modifier, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/media3/cast/MediaRouteButtonState state )` A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary.html` that displays a media route button. |

## Public methods

### MediaRouteButton

Artifact: [androidx.media3:media3-cast](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/cast/MediaRouteButton.kt+function:MediaRouteButton)

```
@MainThread
@UnstableApi
@Composable
public static final void MediaRouteButton(
    @NonNull Modifier modifier,
    @NonNull MediaRouteButtonState state
)
```

A Material3 `https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary.html` that displays a media route button.

Clicking the button displays the route chooser dialog for transferring media or the route controller dialog to control the remote playback. The default behavior prioritizes launching the system's route chooser / controller dialog if available and falls back to an in-app dialog otherwise.

The button's tint color can be customized by providing a `https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary.html` in the composition hierarchy.

```
 CompositionLocalProvider(LocalContentColor provides Color.Blue) {
   MediaRouteButton(modifier = modifier)
}
```

Consumers can also use the `https://developer.android.com/reference/androidx/media3/cast/MediaRouteButtonState` to control inactivity timeout.

```
@Composable
fun MyMediaControls() {
    val mediaRouteState = rememberMediaRouteButtonState()

    // Pause inactivity timeout if the routing picker is visible
    LaunchedEffect(mediaRouteState.isPickerVisible) {
        if (mediaRouteState.isPickerVisible) {
            stopTimer()
        } else {
            startTimer()
        }
    }

    // Pass the hoisted state here
    MediaRouteButton(modifier, mediaRouteState)
}
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html modifier` | the `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.html` to be applied to the button. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/media3/cast/MediaRouteButtonState state` | the `https://developer.android.com/reference/androidx/media3/cast/MediaRouteButtonState` to be used for the button. |

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-state-exception/index.html` | if any of the following condition occurs: - This method is not called on the main thread. - The `https://developer.android.com/reference/androidx/media3/cast/Cast` has not been initialized via Cast.initialize() before this method is called. |