# PlayPauseButtonState

Artifact: [androidx.media3:media3-ui-compose](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/ui/compose/state/PlayPauseButtonState.kt+class:androidx.media3.ui.compose.state.PlayPauseButtonState)


```
@UnstableApi
class PlayPauseButtonState
```

<br />

*** ** * ** ***

State that converts the necessary information from the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` to correctly deal with a UI component representing a PlayPause button.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#PlayPauseButtonState(androidx.media3.common.Player,kotlin.Int)(player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?, displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` |

| ### Public functions |
|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#observe()()` Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#onClick()()` Handles the interaction with the PlayPause button according to the current state of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player`. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#isEnabled()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#player()` is not `null`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_PLAY_PAUSE()` is available and we have something in the `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` to play. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showBuffering()` |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showPlay()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#player()` is `null` or `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#shouldShowPlayButton(androidx.media3.common.Player)` is true. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showReplay()` true if the replay indicator should be shown based on the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#(androidx.media3.common.Player,kotlin.Int)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showRetry()` true if the retry indicator should be shown based on the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#(androidx.media3.common.Player,kotlin.Int)`. |

## Public constructors

### PlayPauseButtonState

```
PlayPauseButtonState(
    player: Player?,
    displayMode: @DisplayMode Int = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR
)
```

| Parameters |
|---|---|
| `displayMode: @https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html = SHOW_BUFFERING_ALWAYS or SHOW_REPLAY_ON_ENDED or SHOW_RETRY_ON_ERROR` | The `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/DisplayMode` specifying when to show buffering, replay, or retry. |

## Public functions

### observe

```
suspend fun observe(): Unit
```

Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAYBACK_STATE_CHANGED()` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAY_WHEN_READY_CHANGED()` in order to determine whether a play or a pause button should be presented on a UI element for playback control.

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_AVAILABLE_COMMANDS_CHANGED()` in order to determine whether the button should be enabled, i.e. respond to user input.

### onClick

```
fun onClick(): Unit
```

Handles the interaction with the PlayPause button according to the current state of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player`.

The `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` update that follows can take a form of `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#play()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#pause()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#prepare()` or `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#seekToDefaultPosition()`.

It will have no effect if no suitable player method is available to handle the play request.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#handlePlayButtonAction(androidx.media3.common.Player)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#handlePauseButtonAction(androidx.media3.common.Player)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#shouldShowPlayButton(androidx.media3.common.Player)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_PLAY_PAUSE()` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_GET_CURRENT_MEDIA_ITEM()` |   |

## Public properties

### isEnabled

```
val isEnabled: Boolean
```

true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#player()` is not `null`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_PLAY_PAUSE()` is available and we have something in the `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` to play. See `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#shouldEnablePlayPauseButton(androidx.media3.common.Player)` for more details.

### showBuffering

```
val showBuffering: Boolean
```

### showPlay

```
val showPlay: Boolean
```

true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#player()` is `null` or `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#shouldShowPlayButton(androidx.media3.common.Player)` is true. Note that `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showReplay()` and `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showRetry()` are further specifications of this state, meaning if either is true, `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#showPlay()` will also be true. Callers may prefer to prioritize showing retry and replay indicators over a generic play indicator.

### showReplay

```
val showReplay: Boolean
```

true if the replay indicator should be shown based on the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#(androidx.media3.common.Player,kotlin.Int)`.

### showRetry

```
val showRetry: Boolean
```

true if the retry indicator should be shown based on the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlayPauseButtonState#(androidx.media3.common.Player,kotlin.Int)`.