# SimpleBasePlayer.PositionSupplier

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/SimpleBasePlayer.java+class:androidx.media3.common.SimpleBasePlayer.PositionSupplier)

*** ** * ** ***


```
public interface SimpleBasePlayer.PositionSupplier
```

<br />

Known direct subclasses [SimpleBasePlayer.LivePositionSupplier](https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.LivePositionSupplier)

|---|---|
| `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.LivePositionSupplier` | A `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier` connected to a live provider that returns a new value on each invocation until it is `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.LivePositionSupplier#disconnect(long)` from the live source. |

*** ** * ** ***

A supplier for a position.

Convenience methods and classes for creating position suppliers:

- Use `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#getConstant(long)` for constant or non-moving positions.
- Use `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#getExtrapolating(long,float)` for positions advancing with the system clock from a provided start time.
- Use `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.LivePositionSupplier` for positions that can be directly obtained from a live system. Note that these suppliers should be `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.LivePositionSupplier#disconnect(long)` from the live source as soon as the position is no longer valid, for example after a position discontinuity.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier` | `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#ZERO()` An instance returning a constant position of zero. |

| ### Public methods |
|---|---|
| `abstract long` | `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#get()()` Returns the position. |
| `default static https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier` | `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#getConstant(long)(long positionMs)` Returns an instance that returns a constant value. |
| `default static https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier` | `https://developer.android.com/reference/androidx/media3/common/SimpleBasePlayer.PositionSupplier#getExtrapolating(long,float)(long currentPositionMs, float playbackSpeed)` Returns an instance that extrapolates the provided position into the future. |

## Constants

### ZERO

```
default static final SimpleBasePlayer.PositionSupplier ZERO
```

An instance returning a constant position of zero.

## Public methods

### get

```
abstract long get()
```

Returns the position.

### getConstant

```
default static SimpleBasePlayer.PositionSupplier getConstant(long positionMs)
```

Returns an instance that returns a constant value.

| Parameters |
|---|---|
| `long positionMs` | The constant position to return, in milliseconds. |

### getExtrapolating

```
default static SimpleBasePlayer.PositionSupplier getExtrapolating(long currentPositionMs, float playbackSpeed)
```

Returns an instance that extrapolates the provided position into the future.

| Parameters |
|---|---|
| `long currentPositionMs` | The current position in milliseconds. |
| `float playbackSpeed` | The playback speed with which the position is assumed to increase. |