# MediaControllerAdapter

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

*** ** * ** ***


```
public class MediaControllerAdapter extends PlayerAdapter
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.leanback.media.PlayerAdapter](https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter) ||
|   | ↳ | [androidx.leanback.media.MediaControllerAdapter](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`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#MediaControllerAdapter(android.support.v4.media.session.MediaControllerCompat)(https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat controller)` Constructor for the adapter using `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat`. |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#fastForward()()` Optional method. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getBufferedPosition()()` Returns the current buffered position of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getCurrentPosition()()` Returns the current position of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getDuration()()` Returns the duration of the media item in milliseconds. |
| `https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getMediaArt(android.content.Context)(https://developer.android.com/reference/android/content/Context.html context)` Get current media's drawable art. |
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getMediaController()()` Return the object of `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` from this class. |
| `https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getMediaSubtitle()()` Get current media's subtitle. |
| `https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getMediaTitle()()` Get current media's title. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#getSupportedActions()()` Return xor combination of values defined in PlaybackBaseControlGlue. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#isPlaying()()` Returns true if media is currently playing. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#next()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#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/MediaControllerAdapter#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/MediaControllerAdapter#pause()()` Pauses the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#play()()` Starts the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#previous()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#rewind()()` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#seekTo(long)(long positionInMs)` Seek to new position. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#setProgressUpdatingEnabled(boolean)(boolean enable)` Implement this method to enable or disable progress updating. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#setRepeatAction(int)(int repeatActionIndex)` Optional method. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaControllerAdapter#setShuffleAction(int)(int shuffleActionIndex)` Optional method. |

| ### Inherited methods |
|---|
| From [androidx.leanback.media.PlayerAdapter](https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter) |---|---| | `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. | | `boolean` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#isPrepared()()` | | `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. | |

## Public constructors

### MediaControllerAdapter

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

```
public MediaControllerAdapter(MediaControllerCompat controller)
```

Constructor for the adapter using `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat controller` | Object of MediaControllerCompat.. |

## Public methods

### fastForward

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

```
public long getBufferedPosition()
```

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

### getCurrentPosition

```
public long getCurrentPosition()
```

Returns the current position of the media item in milliseconds.

### getDuration

```
public long getDuration()
```

Returns the duration of the media item in milliseconds.

### getMediaArt

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

```
public Drawable getMediaArt(Context context)
```

Get current media's drawable art.

| Returns |
|---|---|
| `https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | Drawable art of current media. |

### getMediaController

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

```
public MediaControllerCompat getMediaController()
```

Return the object of `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` from this class.

| Returns |
|---|---|
| `https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat` | Media Controller Compat object owned by this class. |

### getMediaSubtitle

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

```
public CharSequence getMediaSubtitle()
```

Get current media's subtitle.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence.html` | Subtitle of current media. |

### getMediaTitle

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

```
public CharSequence getMediaTitle()
```

Get current media's title.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence.html` | Title of current media. |

### getSupportedActions

```
public long getSupportedActions()
```

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

### isPlaying

```
public boolean isPlaying()
```

Returns true if media is currently playing.

### next

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

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

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

```
public void pause()
```

Pauses the media player.

### play

```
public void play()
```

Starts the media player.

### previous

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

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

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

Seek to new position.

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

### setProgressUpdatingEnabled

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

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

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