# PlayerAdapter

Artifact: [androidx.leanback:leanback](https://developer.android.com/jetpack/androidx/releases/leanback) [View Source](https://cs.android.com/search?q=file:androidx/leanback/media/PlayerAdapter.java+class:androidx.leanback.media.PlayerAdapter) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

*** ** * ** ***


```
public abstract class PlayerAdapter
```

<br />

Known direct subclasses [LeanbackPlayerAdapter](https://developer.android.com/reference/androidx/media3/ui/leanback/LeanbackPlayerAdapter), [MediaControllerAdapter](https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter), [MediaPlayerAdapter](https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter)

|---|---|
| `https://developer.android.com/reference/androidx/media3/ui/leanback/LeanbackPlayerAdapter` | Leanback `PlayerAdapter` implementation for `https://developer.android.com/reference/androidx/media3/common/Player`. |
| `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter` | A helper class for implementing a adapter layer for `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat`. |
| `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter` | This implementation extends the `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter` with a `https://developer.android.com/reference/android/media/MediaPlayer.html`. |

*** ** * ** ***

Base class that wraps underlying media player. The class is used by PlaybackGlue, for example `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue` is bound to a PlayerAdapter. This class is intended to be subclassed, `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter` is a concrete subclass using `https://developer.android.com/reference/android/media/MediaPlayer.html`. ExoPlayer also provides a leanback extension that implements PlayerAdapter. Please see [ExoPlayer](https://developer.android.com/guide/topics/media/exoplayer) https://developer.android.com/guide/topics/media/exoplayer

## Summary

| ### Nested types |
|---|
| `public class https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback` Client for client of PlayerAdapter. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#PlayerAdapter()()` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#fastForward()()` Optional method. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getBufferedPosition()()` Returns the current buffered position of the media item in milliseconds. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getCallback()()` Gets callback for event of PlayerAdapter. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getCurrentPosition()()` Returns the current position of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getDuration()()` Returns the duration of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()()` Return xor combination of values defined in PlaybackBaseControlGlue. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#isPlaying()()` Returns true if media is currently playing. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#isPrepared()()` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#next()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#onAttachedToHost(androidx.leanback.media.PlaybackGlueHost)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost host)` This method is called attached to associated `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#onDetachedFromHost()()` This method is called when current associated `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is attached to a different `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue` or `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is destroyed. |
| `abstract void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#pause()()` Pauses the media player. |
| `abstract void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#play()()` Starts the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#previous()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#rewind()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#seekTo(long)(long positionInMs)` Seek to new position. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#setCallback(androidx.leanback.media.PlayerAdapter.Callback)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback callback)` Sets callback for event of PlayerAdapter. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#setProgressUpdatingEnabled(boolean)(boolean enable)` Implement this method to enable or disable progress updating. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#setRepeatAction(int)(int repeatActionIndex)` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#setShuffleAction(int)(int shuffleActionIndex)` Optional method. |

## Public constructors

### PlayerAdapter

Added in 1.1.0

```
public PlayerAdapter()
```

## Public methods

### fastForward

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void fastForward()
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_FAST_FORWARD()` to fast forward current media item.

### getBufferedPosition

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public long getBufferedPosition()
```

Returns the current buffered position of the media item in milliseconds.

### getCallback

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public final @Nullable PlayerAdapter.Callback getCallback()
```

Gets callback for event of PlayerAdapter.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback` | Client for event of PlayerAdapter. |

### getCurrentPosition

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public long getCurrentPosition()
```

Returns the current position of the media item in milliseconds.

### getDuration

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public long getDuration()
```

Returns the duration of the media item in milliseconds.

### getSupportedActions

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public long getSupportedActions()
```

Return xor combination of values defined in PlaybackBaseControlGlue. Default is PLAY_PAUSE (unless subclass enforce to be 0)

### isPlaying

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public boolean isPlaying()
```

Returns true if media is currently playing.

### isPrepared

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public boolean isPrepared()
```

| Returns |
|---|---|
| `boolean` | True if media is ready for playback, false otherwise. |

### next

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void next()
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SKIP_TO_NEXT()` to skip to next item.

### onAttachedToHost

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void onAttachedToHost(@NonNull PlaybackGlueHost host)
```

This method is called attached to associated `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost host` |   |

### onDetachedFromHost

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void onDetachedFromHost()
```

This method is called when current associated `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is attached to a different `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue` or `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is destroyed. Subclass may override. A typical implementation will release resources (e.g. MediaPlayer or connection to playback service) in this method.

### pause

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public abstract void pause()
```

Pauses the media player.

### play

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public abstract void play()
```

Starts the media player.

### previous

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void previous()
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SKIP_TO_PREVIOUS()` to skip to previous item.

### rewind

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void rewind()
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_REWIND()` to rewind in current media item.

### seekTo

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void seekTo(long positionInMs)
```

Seek to new position.

| Parameters |
|---|---|
| `long positionInMs` | New position in milliseconds. |

### setCallback

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public final void setCallback(@Nullable PlayerAdapter.Callback callback)
```

Sets callback for event of PlayerAdapter.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback callback` | Client for event of PlayerAdapter. |

### setProgressUpdatingEnabled

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void setProgressUpdatingEnabled(boolean enable)
```

Implement this method to enable or disable progress updating.

| Parameters |
|---|---|
| `boolean enable` | True to enable progress updating, false otherwise. |

### setRepeatAction

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void setRepeatAction(int repeatActionIndex)
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_REPEAT()` to set the repeat action.

| Parameters |
|---|---|
| `int repeatActionIndex` | The shuffle action. Must be one of the followings: `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.RepeatAction#INDEX_ONE()``https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.RepeatAction#INDEX_ALL()`, `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.RepeatAction#INDEX_NONE()`, |

### setShuffleAction

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
public void setShuffleAction(int shuffleActionIndex)
```

Optional method. Override this method if `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#getSupportedActions()` include `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SHUFFLE()` to set the shuffle action.

| Parameters |
|---|---|
| `int shuffleActionIndex` | The repeat action. Must be one of the followings: `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.ShuffleAction#INDEX_OFF()``https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.ShuffleAction#INDEX_ON()` |