# MediaPlayerAdapter

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

*** ** * ** ***


```
public class MediaPlayerAdapter 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.MediaPlayerAdapter](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`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#MediaPlayerAdapter(android.content.Context)(https://developer.android.com/reference/android/content/Context.html context)` Constructor. |

| ### Public methods |
|---|---|
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#getBufferedPosition()()` Returns the current buffered position of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#getCurrentPosition()()` Returns the current position of the media item in milliseconds. |
| `long` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#getDuration()()` Returns the duration of the media item in milliseconds. |
| `final https://developer.android.com/reference/android/media/MediaPlayer.html` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#getMediaPlayer()()` Return the MediaPlayer associated with the MediaPlayerAdapter. |
| `int` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#getProgressUpdatingInterval()()` Return updating interval of progress UI in milliseconds. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#isPlaying()()` Returns true if media is currently playing. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#isPrepared()()` |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#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/MediaPlayerAdapter#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/MediaPlayerAdapter#pause()()` Pauses the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#play()()` Starts the media player. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#release()()` Release internal MediaPlayer. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#reset()()` Will reset the `https://developer.android.com/reference/android/media/MediaPlayer.html` and the glue such that a new file can be played. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#seekTo(long)(long positionInMs)` Seek to new position. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#setDataSource(android.net.Uri)(https://developer.android.com/reference/android/net/Uri.html uri)` Sets the media source of the player witha given URI. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#setProgressUpdatingEnabled(boolean)(boolean enable)` Implement this method to enable or disable progress updating. |

| ### Protected methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#onError(int,int)(int what, int extra)` Called to indicate an error. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#onInfo(int,int)(int what, int extra)` Called to indicate an info or a warning. |
| `void` | `https://developer.android.com/reference/androidx/leanback/media/MediaPlayerAdapter#onSeekComplete()()` Called to indicate the completion of a seek operation. |

| ### Inherited methods |
|---|
| From [androidx.leanback.media.PlayerAdapter](https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter) |---|---| | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#fastForward()()` Optional method. | | `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#getSupportedActions()()` Return xor combination of values defined in PlaybackBaseControlGlue. | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#next()()` Optional method. | | `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. | | `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#setRepeatAction(int)(int repeatActionIndex)` Optional method. | | `void` | `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter#setShuffleAction(int)(int shuffleActionIndex)` Optional method. | |

## Public constructors

### MediaPlayerAdapter

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

```
public MediaPlayerAdapter(Context context)
```

Constructor.

## Public methods

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

### getMediaPlayer

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

```
public final MediaPlayer getMediaPlayer()
```

Return the MediaPlayer associated with the MediaPlayerAdapter. App can use the instance to config DRM or control volumes, etc. Warning: App should not use the following seven listeners as they are controlled by MediaPlayerAdapter. If that's the case, app should write its own PlayerAdapter class. `https://developer.android.com/reference/android/media/MediaPlayer.html#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnErrorListener(android.media.MediaPlayer.OnErrorListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnSeekCompleteListener(android.media.MediaPlayer.OnSeekCompleteListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnCompletionListener(android.media.MediaPlayer.OnCompletionListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnInfoListener(android.media.MediaPlayer.OnInfoListener)``https://developer.android.com/reference/android/media/MediaPlayer.html#setOnBufferingUpdateListener(android.media.MediaPlayer.OnBufferingUpdateListener)`

| Returns |
|---|---|
| `https://developer.android.com/reference/android/media/MediaPlayer.html` | The MediaPlayer associated with the MediaPlayerAdapter. |

### getProgressUpdatingInterval

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

```
public int getProgressUpdatingInterval()
```

Return updating interval of progress UI in milliseconds. Subclass may override.

| Returns |
|---|---|
| `int` | Update interval of progress UI in milliseconds. |

### isPlaying

```
public boolean isPlaying()
```

Returns true if media is currently playing.

### isPrepared

```
public boolean isPrepared()
```

| Returns |
|---|---|
| `boolean` | True if MediaPlayer OnPreparedListener is invoked and got a SurfaceHolder if `https://developer.android.com/reference/androidx/leanback/media/PlaybackGlueHost` provides SurfaceHolder. |

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

### release

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

```
public void release()
```

Release internal MediaPlayer. Should not use the object after call release().

### reset

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

```
public void reset()
```

Will reset the `https://developer.android.com/reference/android/media/MediaPlayer.html` and the glue such that a new file can be played. You are not required to call this method before playing the first file. However you have to call it before playing a second one.

### seekTo

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

Seek to new position.

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

### setDataSource

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

```
public boolean setDataSource(Uri uri)
```

Sets the media source of the player witha given URI.

| Returns |
|---|---|
| `boolean` | Returns `true` if uri represents a new media; `false`otherwise. |

| See also |
|---|---|
| `https://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(java.lang.String)` |   |

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

## Protected methods

### onError

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

```
protected boolean onError(int what, int extra)
```

Called to indicate an error.

| Parameters |
|---|---|
| `int what` | the type of error that has occurred: - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_UNKNOWN` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_SERVER_DIED` |
| `int extra` | an extra code, specific to the error. Typically implementation dependent. - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_IO` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_MALFORMED` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_UNSUPPORTED` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_ERROR_TIMED_OUT` - `MEDIA_ERROR_SYSTEM (-2147483648)` - low-level system error. |

| Returns |
|---|---|
| `boolean` | True if the method handled the error, false if it didn't. Returning false, will cause the `https://developer.android.com/reference/androidx/leanback/media/PlayerAdapter.Callback#onPlayCompleted(androidx.leanback.media.PlayerAdapter)` being called. |

### onInfo

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

```
protected boolean onInfo(int what, int extra)
```

Called to indicate an info or a warning.

| Parameters |
|---|---|
| `int what` | the type of info or warning. - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_UNKNOWN` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_VIDEO_TRACK_LAGGING` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_VIDEO_RENDERING_START` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BUFFERING_START` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BUFFERING_END` - `MEDIA_INFO_NETWORK_BANDWIDTH (703)` - bandwidth information is available (as `extra` kbps) - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BAD_INTERLEAVING` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_NOT_SEEKABLE` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_METADATA_UPDATE` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_UNSUPPORTED_SUBTITLE` - `https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_SUBTITLE_TIMED_OUT` |
| `int extra` | an extra code, specific to the info. Typically implementation dependent. |

| Returns |
|---|---|
| `boolean` | True if the method handled the info, false if it didn't. Returning false, will cause the info to be discarded. |

### onSeekComplete

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

```
protected void onSeekComplete()
```

Called to indicate the completion of a seek operation.