# PlaybackTransportControlGlue

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

*** ** * ** ***


```
public class PlaybackTransportControlGlue<T extends PlayerAdapter> extends PlaybackBaseControlGlue<T>
```

<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)\<T\> ||
|   |   | ↳ | [androidx.leanback.media.PlaybackTransportControlGlue](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. This helper class is a glue layer in 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/PlaybackTransportRowPresenter` and a functional `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter` which represents the underlying media player.

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 actions bar: primary actions bar and secondary actions bar. App can provide additional actions by overriding `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#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 override `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#onActionClicked(androidx.leanback.widget.Action)`.

It's also subclass's responsibility to implement the "repeat mode" in `https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue#onPlayCompleted()`.

Apps calls `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider)` to provide seek data. If the `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` is instance of `https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekUi`, the provider will be passed to PlaybackGlueHost to render thumb bitmaps.
Sample Code:

```
public class MyVideoFragment extends VideoFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PlaybackTransportControlGlueplayerGlue =
                new PlaybackTransportControlGlue(getActivity(),
                        new MediaPlayerAdapter(getActivity()));
        playerGlue.setHost(new VideoFragmentGlueHost(this));
        playerGlue.setSubtitle("Leanback artist");
        playerGlue.setTitle("Leanback team at work");
        String uriPath = "android.resource://com.example.android.leanback/raw/video";
        playerGlue.getPlayerAdapter().setDataSource(Uri.parse(uriPath));
        playerGlue.playWhenPrepared();
    }
}
```

| 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

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#PlaybackTransportControlGlue(android.content.Context,T)(https://developer.android.com/reference/android/content/Context.html context, T impl)` Constructor for the glue. |

| ### Public methods |
|---|---|
| `final https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekDataProvider` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#getSeekProvider()()` Get seek data provider used during user seeking. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#isSeekEnabled()()` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#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. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#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/PlaybackTransportControlGlue#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. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#setSeekEnabled(boolean)(boolean seekEnabled)` Enable or disable seek when `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#getSeekProvider()` is null. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#setSeekProvider(androidx.leanback.widget.PlaybackSeekDataProvider)(https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekDataProvider seekProvider)` Set seek data provider used during user seeking. |

| ### Protected methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#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/PlaybackTransportControlGlue#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. |
| `@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/PlaybackTransportControlGlue#onCreateRowPresenter()()` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#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/PlaybackTransportControlGlue#onPlayStateChanged()()` Event when play state changed. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#onUpdateProgress()()` |

### Inherited Constants

From [androidx.leanback.media.PlaybackBaseControlGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue) `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.

### Inherited methods

From [androidx.leanback.media.PlaybackBaseControlGlue](https://developer.android.com/reference/androidx/leanback/media/PlaybackBaseControlGlue) `@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.
`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#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#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#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/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#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.
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`.
From [android.view.View.OnKeyListener](https://developer.android.com/reference/android/view/View.OnKeyListener.html) `abstract boolean` `https://developer.android.com/reference/android/view/View.OnKeyListener.html#onKey(android.view.View, int, android.view.KeyEvent)(https://developer.android.com/reference/android/view/View.html p, int p1, https://developer.android.com/reference/android/view/KeyEvent.html p2)`

## Public constructors

### PlaybackTransportControlGlue

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

```
public PlaybackTransportControlGlue(Context context, T impl)
```

Constructor for the glue.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` |   |
| `T impl` | Implementation to underlying media player. |

## Public methods

### getSeekProvider

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

```
public final PlaybackSeekDataProvider getSeekProvider()
```

Get seek data provider used during user seeking.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekDataProvider` | Seek data provider used during user seeking. |

### isSeekEnabled

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

```
public final boolean isSeekEnabled()
```

| Returns |
|---|---|
| `boolean` | True if seek is enabled without `https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekDataProvider`, false otherwise. |

### onActionClicked

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

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

### onKey

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

```
public 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.

### setControlsRow

```
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.

### setSeekEnabled

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

```
public final void setSeekEnabled(boolean seekEnabled)
```

Enable or disable seek when `https://developer.android.com/reference/androidx/leanback/media/PlaybackTransportControlGlue#getSeekProvider()` is null. When true, `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#seekTo(long)` will be called during user seeking.

| Parameters |
|---|---|
| `boolean seekEnabled` | True to enable seek, false otherwise |

### setSeekProvider

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

```
public final void setSeekProvider(PlaybackSeekDataProvider seekProvider)
```

Set seek data provider used during user seeking.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/leanback/widget/PlaybackSeekDataProvider seekProvider` | Seek data provider used during user seeking. |

## Protected methods

### 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

```
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

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

### 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.

### onPlayStateChanged

```
protected void onPlayStateChanged()
```

Event when play state changed.

### onUpdateProgress

```
protected void onUpdateProgress()
```