# PlaybackState

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/PlaybackState.kt+class:androidx.media3.ui.compose.state.PlaybackState)


```
@UnstableApi
class PlaybackState
```

<br />

*** ** * ** ***

A general-purpose, read-only state holder that observes and exposes the core playback states of a `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` reactively for Compose UIs.

This state is decoupled from any specific UI component and is ideal for driving overlays, shimmers, or custom control layouts.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#PlaybackState(androidx.media3.common.Player)(player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?)` |

| ### Public functions |
|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-nothing/index.html?` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#observe()()` Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to: |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#isPlaying()` Whether the player is actively playing. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playWhenReady()` Whether the player should play when ready. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playbackState()` The raw @Player.State of the player. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playbackSuppressionReason()` The reason why playback is suppressed even if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playWhenReady()` is true, or `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_NONE()` if playback is not suppressed. |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/PlaybackException?` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playerError()` The last error that caused playback to fail, or null if there is no error. |

## Public constructors

### PlaybackState

```
PlaybackState(player: Player?)
```

## Public functions

### observe

```
suspend fun observe(): Nothing?
```

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()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAY_WHEN_READY_CHANGED()` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED()` in order to determine whether the player is buffering, has ended, or is playing.

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_IS_PLAYING_CHANGED()` in order to determine whether the player is actively playing.

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAYER_ERROR()` in order to determine whether a playback error occurred.

## Public properties

### isPlaying

```
val isPlaying: Boolean
```

Whether the player is actively playing.

### playWhenReady

```
val playWhenReady: Boolean
```

Whether the player should play when ready.

### playbackState

```
val playbackState: Int
```

The raw @Player.State of the player.

### playbackSuppressionReason

```
val playbackSuppressionReason: Int
```

The reason why playback is suppressed even if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackState#playWhenReady()` is true, or `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_NONE()` if playback is not suppressed.

### playerError

```
val playerError: PlaybackException?
```

The last error that caused playback to fail, or null if there is no error.