# StuckPlayerDetector

Artifact: [androidx.media3:media3-common](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/common/util/StuckPlayerDetector.java+class:androidx.media3.common.util.StuckPlayerDetector)

*** ** * ** ***


```
@UnstableApi
public final class StuckPlayerDetector
```

<br />

*** ** * ** ***

A utility class to detect whether a `https://developer.android.com/reference/androidx/media3/common/Player` is stuck.

The class must be used on the thread associated with the `https://developer.android.com/reference/androidx/media3/common/Player#getApplicationLooper()`.

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector.Callback` Callback notified when the player appears stuck. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector#StuckPlayerDetector(androidx.media3.common.Player,androidx.media3.common.util.StuckPlayerDetector.Callback,androidx.media3.common.util.Clock,int,int,int,int)( https://developer.android.com/reference/androidx/media3/common/Player player, https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector.Callback callback, https://developer.android.com/reference/androidx/media3/common/util/Clock clock, int stuckBufferingTimeoutMs, int stuckPlayingTimeoutMs, int stuckPlayingNotEndingTimeoutMs, int stuckSuppressedTimeoutMs )` Creates the stuck player detector. |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector#release()()` Releases the stuck player detector. |

## Public constructors

### StuckPlayerDetector

```
public StuckPlayerDetector(
    Player player,
    StuckPlayerDetector.Callback callback,
    Clock clock,
    int stuckBufferingTimeoutMs,
    int stuckPlayingTimeoutMs,
    int stuckPlayingNotEndingTimeoutMs,
    int stuckSuppressedTimeoutMs
)
```

Creates the stuck player detector.

Must be called on the player's `https://developer.android.com/reference/androidx/media3/common/Player#getApplicationLooper()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Player player` | The `https://developer.android.com/reference/androidx/media3/common/Player` to monitor. |
| `https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector.Callback callback` | The `https://developer.android.com/reference/androidx/media3/common/util/StuckPlayerDetector.Callback` to notify of stuck playbacks. |
| `https://developer.android.com/reference/androidx/media3/common/util/Clock clock` | The `https://developer.android.com/reference/androidx/media3/common/util/Clock`. |
| `int stuckBufferingTimeoutMs` | The timeout after which the player is assumed stuck buffering if it's buffering and no loading progress is made, in milliseconds. |
| `int stuckPlayingTimeoutMs` | The timeout after which the player is assumed stuck playing if it's playing and no position progress is made, in milliseconds. |
| `int stuckPlayingNotEndingTimeoutMs` | The timeout after which the player is assumed stuck playing if it's playing and it should have ended, in milliseconds. |
| `int stuckSuppressedTimeoutMs` | The timeout after which the player is assumed stuck in a suppression state, in milliseconds. |

## Public methods

### release

```
public void release()
```

Releases the stuck player detector.