# PlaybackBaseControlGlue

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

*** ** * ** ***


```
public abstract class PlaybackBaseControlGlue<T extends PlayerAdapter> extends PlaybackGlue implements OnActionClickedListener, View.OnKeyListener
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.leanback.media.PlaybackGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue) ||
|   | ↳ | [androidx.leanback.media.PlaybackBaseControlGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue) |

Known direct subclasses [PlaybackBannerControlGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackBannerControlGlue), [PlaybackTransportControlGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue)

|---|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackBannerControlGlue` | A helper class for managing a `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow` being displayed in `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`. |
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue` | A helper class for managing a `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow` being displayed in `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`, it supports standard playback control actions play/pause, and skip next/previous. |

*** ** * ** ***

A base abstract class for managing a `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow` being displayed in `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`. It supports standard playback control actions play/pause and skip next/previous. This helper class is a glue layer that manages interaction between the leanback UI components `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow``https://developer.android.com/reference/androidx/leanback/widget/PlaybackRowPresenter` and a functional `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter` which represents the underlying media player.

The app must pass a `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter` in constructor for a specific implementation e.g. a `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter`.

The glue has two action bars: primary action bars and secondary action bars. Apps can provide additional actions by overriding `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter)` and / or `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter)` and respond to actions by overriding `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onActionClicked(androidx.leanback.widget.Action)`.

The subclass is responsible for implementing the "repeat mode" in `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onPlayCompleted()`.

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter>` | Type of `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter` passed in constructor. |

## Summary

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_CUSTOM_LEFT_FIRST() = 1` The adapter key for the first custom control on the left side of the predefined primary controls. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_CUSTOM_RIGHT_FIRST() = 4096` The adapter key for the first custom control on the right side of the predefined primary controls. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_FAST_FORWARD() = 128` The adapter key for the fast forward control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_PLAY_PAUSE() = 64` The adapter key for the play/pause control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_REPEAT() = 512` The adapter key for the repeat control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_REWIND() = 32` The adapter key for the rewind control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SHUFFLE() = 1024` The adapter key for the shuffle control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SKIP_TO_NEXT() = 256` The adapter key for the skip to next control. |
| `static final int` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#ACTION_SKIP_TO_PREVIOUS() = 16` The adapter key for the skip to previous control. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#PlaybackBaseControlGlue(android.content.Context,T)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context, T impl)` Constructor for the glue. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getArt()()` |
| `final long` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getBufferedPosition()()` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getControlsRow()()` Returns the playback controls row managed by the glue layer. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getCurrentPosition()()` |
| `final long` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getDuration()()` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/PlaybackRowPresenter` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getPlaybackRowPresenter()()` Returns the playback controls row Presenter managed by the glue layer. |
| `final T` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getPlayerAdapter()()` |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getSubtitle()()` Return The media subtitle. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getSupportedActions()()` Returns a bitmask of actions supported by the media player. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#getTitle()()` Returns the title of the media item. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#isControlsOverlayAutoHideEnabled()()` Returns true if the controls auto hides after a timeout when media is playing. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#isPlaying()()` Returns true if media is currently playing. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#isPrepared()()` Returns true when the media player is prepared to start media playback. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#next()()` Goes to the next media item. |
| `abstract void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onActionClicked(androidx.leanback.widget.Action)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Action action)` Handles action clicks. |
| `abstract boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onKey(android.view.View,int,android.view.KeyEvent)(https://developer.android.com/reference/android/view/View.html v, int keyCode, https://developer.android.com/reference/android/view/KeyEvent.html event)` Handles key events and returns true if handled. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#pause()()` Pauses the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#play()()` Starts the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#previous()()` Goes to the previous media item. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#seekTo(long)(long position)` Seek media to a new position. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setArt(android.graphics.drawable.Drawable)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/drawable/Drawable.html cover)` Sets the drawable representing cover image. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setControlsOverlayAutoHideEnabled(boolean)(boolean enable)` Sets the controls to auto hide after a timeout when media is playing. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setControlsRow(androidx.leanback.widget.PlaybackControlsRow)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow controlsRow)` Sets the controls row to be managed by the glue layer. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setPlaybackRowPresenter(androidx.leanback.widget.PlaybackRowPresenter)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/PlaybackRowPresenter presenter)` Sets the controls row Presenter to be managed by the glue layer. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setSubtitle(java.lang.CharSequence)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html subtitle)` Sets the media subtitle. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#setTitle(java.lang.CharSequence)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html title)` Sets the media title. |

| ### Protected methods |
|---|---|
| `static void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#notifyItemChanged(androidx.leanback.widget.ArrayObjectAdapter,java.lang.Object)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter adapter, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Object.html object )` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#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/PlaybackBaseControlGlue#onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter primaryActionsAdapter )` May be overridden to add primary actions to the adapter. |
| `abstract @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/PlaybackRowPresenter` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreateRowPresenter()()` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter secondaryActionsAdapter )` May be overridden to add secondary actions to the adapter. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#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 . |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onHostStart()()` This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is started. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onHostStop()()` This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is stopped. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onMetadataChanged()()` Event when metadata changed |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onPlayCompleted()()` Event when play finishes, subclass may handling repeat mode here. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onPlayStateChanged()()` Event when play state changed. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onPreparedStateChanged()()` Event when ready state for play changes. |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onUpdateBufferedProgress()()` |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onUpdateDuration()()` |
| `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onUpdateProgress()()` |

| ### Inherited methods |
|---|
| From [androidx.leanback.media.PlaybackGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue) |---|---| | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#addPlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue.PlayerCallback playerCallback)` Add a PlayerCallback. | | `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#getContext()()` Returns the context. | | `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#getHost()()` | | `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue.PlayerCallback>` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#getPlayerCallbacks()()` | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#onHostPause()()` This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is paused. | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#onHostResume()()` This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is resumed. | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#playWhenPrepared()()` Starts play when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#isPrepared()` becomes true. | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#removePlayerCallback(androidx.leanback.media.PlaybackGlue.PlayerCallback)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue.PlayerCallback callback)` Remove a PlayerCallback. | | `final void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#setHost(androidx.leanback.media.PlaybackGlueHost)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost host)` This method is used to associate a PlaybackGlue with the `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` which provides UI and optional `https://developer.android.com/reference/androidx/leanback/media/SurfaceHolderGlueHost`. | |

## Constants

### ACTION_CUSTOM_LEFT_FIRST

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

```
public static final int ACTION_CUSTOM_LEFT_FIRST = 1
```

The adapter key for the first custom control on the left side of the predefined primary controls.

### ACTION_CUSTOM_RIGHT_FIRST

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

```
public static final int ACTION_CUSTOM_RIGHT_FIRST = 4096
```

The adapter key for the first custom control on the right side of the predefined primary controls.

### ACTION_FAST_FORWARD

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

```
public static final int ACTION_FAST_FORWARD = 128
```

The adapter key for the fast forward control.

### ACTION_PLAY_PAUSE

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

```
public static final int ACTION_PLAY_PAUSE = 64
```

The adapter key for the play/pause control.

### ACTION_REPEAT

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

```
public static final int ACTION_REPEAT = 512
```

The adapter key for the repeat control.

### ACTION_REWIND

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

```
public static final int ACTION_REWIND = 32
```

The adapter key for the rewind control.

### ACTION_SHUFFLE

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

```
public static final int ACTION_SHUFFLE = 1024
```

The adapter key for the shuffle control.

### ACTION_SKIP_TO_NEXT

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

```
public static final int ACTION_SKIP_TO_NEXT = 256
```

The adapter key for the skip to next control.

### ACTION_SKIP_TO_PREVIOUS

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

```
public static final int ACTION_SKIP_TO_PREVIOUS = 16
```

The adapter key for the skip to previous control.

## Public constructors

### PlaybackBaseControlGlue

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

```
public PlaybackBaseControlGlue(@NonNull Context context, T impl)
```

Constructor for the glue.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context` |   |
| `T impl` | Implementation to underlying media player. |

## Public methods

### getArt

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

```
public @Nullable Drawable getArt()
```

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | The drawable representing cover image. |

### getBufferedPosition

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

```
public final long getBufferedPosition()
```

| Returns |
|---|---|
| `long` | The current buffered position of the media item in milliseconds. |

### getControlsRow

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

```
public @Nullable PlaybackControlsRow getControlsRow()
```

Returns the playback controls row managed by the glue layer.

### getCurrentPosition

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

```
public long getCurrentPosition()
```

| Returns |
|---|---|
| `long` | 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 final long getDuration()
```

| Returns |
|---|---|
| `long` | The duration of the media item in milliseconds. |

### getPlaybackRowPresenter

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

```
public @Nullable PlaybackRowPresenter getPlaybackRowPresenter()
```

Returns the playback controls row Presenter managed by the glue layer.

### getPlayerAdapter

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

```
public final T getPlayerAdapter()
```

### getSubtitle

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

```
public @Nullable CharSequence getSubtitle()
```

Return The media subtitle.

### getSupportedActions

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

```
public long getSupportedActions()
```

Returns a bitmask of actions supported by the media player.

### getTitle

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

```
public @Nullable CharSequence getTitle()
```

Returns the title of the media item.

### isControlsOverlayAutoHideEnabled

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

```
public boolean isControlsOverlayAutoHideEnabled()
```

Returns true if the controls auto hides after a timeout when media is playing.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost#isControlsOverlayAutoHideEnabled()` |   |

### isPlaying

```
public final boolean isPlaying()
```

Returns true if media is currently playing.

### isPrepared

```
public final boolean isPrepared()
```

Returns true when the media player is prepared to start media playback. When returning false, app may listen to `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue.PlayerCallback#onPreparedStateChanged(androidx.leanback.media.PlaybackGlue)` event.

| Returns |
|---|---|
| `boolean` | True if prepared, false otherwise. |

### next

```
public void next()
```

Goes to the next media item. This method is optional.

### onActionClicked

```
public abstract void onActionClicked(@NonNull Action action)
```

Handles action clicks. A subclass may override this add support for additional actions.

### onKey

```
public abstract boolean onKey(View v, int keyCode, KeyEvent event)
```

Handles key events and returns true if handled. A subclass may override this to provide additional support.

### pause

```
public void pause()
```

Pauses the media player.

### play

```
public void play()
```

Starts the media player. Does nothing if `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#isPrepared()` is false. To wait `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#isPrepared()` to be true before playing, use `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlue#playWhenPrepared()`.

### previous

```
public void previous()
```

Goes to the previous media item. This method is optional.

### seekTo

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

```
public final void seekTo(long position)
```

Seek media to a new position.

| Parameters |
|---|---|
| `long position` | New position. |

### setArt

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

```
public void setArt(@Nullable Drawable cover)
```

Sets the drawable representing cover image. The drawable will be rendered by default description presenter in `https://developer.android.com/reference/androidx/leanback/widget/PlaybackTransportRowPresenter#setDescriptionPresenter(androidx.leanback.widget.Presenter)`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/graphics/drawable/Drawable.html cover` | The drawable representing cover image. |

### setControlsOverlayAutoHideEnabled

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

```
public void setControlsOverlayAutoHideEnabled(boolean enable)
```

Sets the controls to auto hide after a timeout when media is playing.

| Parameters |
|---|---|
| `boolean enable` | True to enable auto hide after a timeout when media is playing. |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost#setControlsOverlayAutoHideEnabled(boolean)` |   |

### setControlsRow

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

```
public void setControlsRow(@NonNull PlaybackControlsRow controlsRow)
```

Sets the controls row to be managed by the glue layer. If `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow#getPrimaryActionsAdapter()` is not provided, a default `https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter` will be created and initialized in `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreatePrimaryActions(androidx.leanback.widget.ArrayObjectAdapter)`. If `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow#getSecondaryActionsAdapter()` is not provided, a default `https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter` will be created and initialized in `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onCreateSecondaryActions(androidx.leanback.widget.ArrayObjectAdapter)`. The primary actions and playback state related aspects of the row are updated by the glue.

### setPlaybackRowPresenter

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

```
public void setPlaybackRowPresenter(@Nullable PlaybackRowPresenter presenter)
```

Sets the controls row Presenter to be managed by the glue layer.

### setSubtitle

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

```
public void setSubtitle(@Nullable CharSequence subtitle)
```

Sets the media subtitle. The subtitle will be rendered by default description presenter `https://developer.android.com/reference/androidx/leanback/widget/PlaybackTransportRowPresenter#setDescriptionPresenter(androidx.leanback.widget.Presenter)`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/CharSequence.html subtitle` | Subtitle to set. |

### setTitle

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

```
public void setTitle(@Nullable CharSequence title)
```

Sets the media title. The title will be rendered by default description presenter `https://developer.android.com/reference/androidx/leanback/widget/PlaybackTransportRowPresenter#setDescriptionPresenter(androidx.leanback.widget.Presenter)`.

## Protected methods

### notifyItemChanged

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

```
protected static void notifyItemChanged(
    @NonNull ArrayObjectAdapter adapter,
    @NonNull Object object
)
```

### onAttachedToHost

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

This method is called attached to associated `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost`. Subclass may override and call super.onAttachedToHost().

### onCreatePrimaryActions

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

```
protected void onCreatePrimaryActions(
    @NonNull ArrayObjectAdapter primaryActionsAdapter
)
```

May be overridden to add primary actions to the adapter. Default implementation add `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow.PlayPauseAction`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter primaryActionsAdapter` | The adapter to add primary `https://developer.android.com/reference/androidx/leanback/widget/Action`s. |

### onCreateRowPresenter

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

```
protected abstract @NonNull PlaybackRowPresenter onCreateRowPresenter()
```

### onCreateSecondaryActions

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

```
protected void onCreateSecondaryActions(
    @NonNull ArrayObjectAdapter secondaryActionsAdapter
)
```

May be overridden to add secondary actions to the adapter.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ArrayObjectAdapter secondaryActionsAdapter` | The adapter you need to add the `https://developer.android.com/reference/androidx/leanback/widget/Action`s to. |

### onDetachedFromHost

```
protected 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 and call super.onDetachedFromHost() at last. A typical PlaybackGlue will release resources (e.g. MediaPlayer or connection to playback service) in this method.

### onHostStart

```
protected void onHostStart()
```

This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is started. Subclass may override.

### onHostStop

```
protected void onHostStop()
```

This method is called when `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is stopped. Subclass may override.

### onMetadataChanged

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

```
protected void onMetadataChanged()
```

Event when metadata changed

### onPlayCompleted

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

```
@CallSuper
protected void onPlayCompleted()
```

Event when play finishes, subclass may handling repeat mode here.

### onPlayStateChanged

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

```
@CallSuper
protected void onPlayStateChanged()
```

Event when play state changed.

### onPreparedStateChanged

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

```
@CallSuper
protected void onPreparedStateChanged()
```

Event when ready state for play changes.

### onUpdateBufferedProgress

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

```
@CallSuper
protected void onUpdateBufferedProgress()
```

### onUpdateDuration

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

```
@CallSuper
protected void onUpdateDuration()
```

### onUpdateProgress

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

```
@CallSuper
protected void onUpdateProgress()
```