# MediaBrowser

Artifact: [androidx.media3:media3-session](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/session/MediaBrowser.java+class:androidx.media3.session.MediaBrowser)

*** ** * ** ***


```
public final class MediaBrowser extends MediaController
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.media3.session.MediaController](https://developer.android.com/reference/androidx/media3/session/MediaController) ||
|   | ↳ | [androidx.media3.session.MediaBrowser](https://developer.android.com/reference/androidx/media3/session/MediaBrowser) |

*** ** * ** ***

Browses media content offered by a `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService` in addition to the `https://developer.android.com/reference/androidx/media3/session/MediaController` functions.

## Backward interoperability

The browser is backwards-compatible when connected to a legacy `
androidx.media.MediaBrowserServiceCompat` or `android.service.media.MediaBrowserService` (unless otherwise stated).

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/session/MediaBrowser.Builder` A builder for `https://developer.android.com/reference/androidx/media3/session/MediaBrowser`. |
| `public interface https://developer.android.com/reference/androidx/media3/session/MediaBrowser.Listener extends https://developer.android.com/reference/androidx/media3/session/MediaController.Listener` A listener for events from `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService`. |

| ### Public methods |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/common/MediaItem>>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getChildren(java.lang.String,int,int,androidx.media3.session.MediaLibraryService.LibraryParams)( https://developer.android.com/reference/java/lang/String.html parentId, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int page, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) int pageSize, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params )` Returns the children under a parent id. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/androidx/media3/common/MediaItem>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getItem(java.lang.String)(https://developer.android.com/reference/java/lang/String.html mediaId)` Returns the media item with the given media id. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/androidx/media3/common/MediaItem>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getLibraryRoot(androidx.media3.session.MediaLibraryService.LibraryParams)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params)` Returns the library root item. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/common/MediaItem>>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getSearchResult(java.lang.String,int,int,androidx.media3.session.MediaLibraryService.LibraryParams)( https://developer.android.com/reference/java/lang/String.html query, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int page, @https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) int pageSize, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params )` Returns the search result from the library service. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#search(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)(https://developer.android.com/reference/java/lang/String.html query, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params)` Requests a search from the library service. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)( https://developer.android.com/reference/java/lang/String.html parentId, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params )` Subscribes to a parent id for changes to its children. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#unsubscribe(java.lang.String)(https://developer.android.com/reference/java/lang/String.html parentId)` Unsubscribes from a parent id for changes to its children, which was previously subscribed by `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |

### Inherited Constants

From [androidx.media3.session.MediaController](https://developer.android.com/reference/androidx/media3/session/MediaController) `static final long` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#DEFAULT_PLATFORM_CALLBACK_AGGREGATION_TIMEOUT_MS() = 100` `static final https://developer.android.com/reference/java/lang/String.html` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#KEY_MEDIA_NOTIFICATION_CONTROLLER_FLAG() = "androidx.media3.session.MediaNotificationManager"`

Key to mark the connection hints of the media notification controller.
`static final long` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#RELEASE_UNBIND_TIMEOUT_MS() = 30000`

The timeout for handling pending commands after calling `https://developer.android.com/reference/androidx/media3/session/MediaController#release()`.
From [androidx.media3.common.Player](https://developer.android.com/reference/androidx/media3/common/Player) `static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_ADJUST_DEVICE_VOLUME() = 26`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS() = 34`

Command to increase and decrease the device volume and mute it with volume flags.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_CHANGE_MEDIA_ITEMS() = 20`

Command to change the `https://developer.android.com/reference/androidx/media3/common/MediaItem` in the playlist.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_AUDIO_ATTRIBUTES() = 21`

Command to get the player current `https://developer.android.com/reference/androidx/media3/common/AudioAttributes`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_CURRENT_MEDIA_ITEM() = 16`

Command to get information about the currently playing `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_DEVICE_VOLUME() = 23`

Command to get the device volume and whether it is muted.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_MEDIA_ITEMS_METADATA() = 18`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_METADATA()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_METADATA() = 18`

Command to get metadata related to the playlist and current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_TEXT() = 28`

Command to get the text that should currently be displayed by the player.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_TIMELINE() = 17`

Command to get the information about the current timeline.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_TRACKS() = 30`

Command to get details of the current track selection.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_GET_VOLUME() = 22`

Command to get the player volume.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_INVALID() = -1`

Represents an invalid `https://developer.android.com/reference/androidx/media3/common/Player.Command`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_PLAY_PAUSE() = 1`

Command to start, pause or resume playback.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_PREPARE() = 2`

Command to prepare the player.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_RELEASE() = 32`

Command to release the player.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_BACK() = 11`

Command to seek back by a fixed increment inside the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_FORWARD() = 12`

Command to seek forward by a fixed increment inside the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM() = 5`

Command to seek anywhere inside the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_IN_CURRENT_WINDOW() = 5`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_IN_CURRENT_MEDIA_ITEM()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_DEFAULT_POSITION() = 4`

Command to seek to the default position of the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_MEDIA_ITEM() = 10`

Command to seek anywhere in any `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_NEXT() = 9`

Command to seek to a later position in the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` or the default position of the next `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_NEXT_MEDIA_ITEM() = 8`

Command to seek to the default position of the next `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_NEXT_WINDOW() = 8`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_NEXT_MEDIA_ITEM()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_PREVIOUS() = 7`

Command to seek to an earlier position in the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` or the default position of the previous `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM() = 6`

Command to seek to the default position of the previous `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_PREVIOUS_WINDOW() = 6`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM()` instead.

<br />

`static final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_WINDOW() = 10`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SEEK_TO_MEDIA_ITEM()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_AUDIO_ATTRIBUTES() = 35`

Command to set the player's audio attributes.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_DEVICE_VOLUME() = 25`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS() = 33`

Command to set the device volume with volume flags.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_MEDIA_ITEM() = 31`

Command to set a `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_MEDIA_ITEMS_METADATA() = 19`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_PLAYLIST_METADATA()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_PLAYLIST_METADATA() = 19`

Command to set the playlist metadata.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_REPEAT_MODE() = 15`

Command to set the repeat mode.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_SHUFFLE_MODE() = 14`

Command to enable shuffling.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_SPEED_AND_PITCH() = 13`

Command to set the playback speed and pitch.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_TRACK_SELECTION_PARAMETERS() = 29`

Command to set the player's track selection parameters.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_VIDEO_SURFACE() = 27`

Command to set and clear the surface on which to render the video.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_SET_VOLUME() = 24`

Command to set the player volume.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#COMMAND_STOP() = 3`

Command to stop playback.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_AUTO_TRANSITION() = 0`

Automatic playback transition from one period in the timeline to the next.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_INTERNAL() = 5`

Discontinuity introduced internally (e.g. by the source).
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_REMOVE() = 4`

Discontinuity caused by the removal of the current period from the `https://developer.android.com/reference/androidx/media3/common/Timeline`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_SEEK() = 1`

Seek within the current period or to another period.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_SEEK_ADJUSTMENT() = 2`

Seek adjustment due to being unable to seek to the requested position or because the seek was permitted to be inexact.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_SILENCE_SKIP() = 6`

Discontinuity introduced by a skipped silence.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#DISCONTINUITY_REASON_SKIP() = 3`

Discontinuity introduced by a skipped period (for instance a skipped ad).
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_AUDIO_ATTRIBUTES_CHANGED() = 20`

`https://developer.android.com/reference/androidx/media3/common/Player#getAudioAttributes()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_AUDIO_SESSION_ID() = 21`

The audio session id was set.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_AVAILABLE_COMMANDS_CHANGED() = 13`

`https://developer.android.com/reference/androidx/media3/common/Player#isCommandAvailable(int)` changed for at least one `https://developer.android.com/reference/androidx/media3/common/Player.Command`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_CUES() = 27`

`https://developer.android.com/reference/androidx/media3/common/Player#getCurrentCues()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_DEVICE_INFO_CHANGED() = 29`

`https://developer.android.com/reference/androidx/media3/common/Player#getDeviceInfo()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_DEVICE_VOLUME_CHANGED() = 30`

`https://developer.android.com/reference/androidx/media3/common/Player#getDeviceVolume()` or `https://developer.android.com/reference/androidx/media3/common/Player#isDeviceMuted()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_IS_LOADING_CHANGED() = 3`

`https://developer.android.com/reference/androidx/media3/common/Player#isLoading()` ()} changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_IS_PLAYING_CHANGED() = 7`

`https://developer.android.com/reference/androidx/media3/common/Player#isPlaying()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_MAX_SEEK_TO_PREVIOUS_POSITION_CHANGED() = 18`

`https://developer.android.com/reference/androidx/media3/common/Player#getMaxSeekToPreviousPosition()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_MEDIA_ITEM_TRANSITION() = 1`

`https://developer.android.com/reference/androidx/media3/common/Player#getCurrentMediaItem()` changed or the player started repeating the current item.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_MEDIA_METADATA_CHANGED() = 14`

`https://developer.android.com/reference/androidx/media3/common/Player#getMediaMetadata()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_METADATA() = 28`

Metadata associated with the current playback time changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAYBACK_PARAMETERS_CHANGED() = 12`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackParameters()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAYBACK_STATE_CHANGED() = 4`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackState()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED() = 6`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackSuppressionReason()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAYER_ERROR() = 10`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlayerError()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAYLIST_METADATA_CHANGED() = 15`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlaylistMetadata()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_PLAY_WHEN_READY_CHANGED() = 5`

`https://developer.android.com/reference/androidx/media3/common/Player#getPlayWhenReady()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_POSITION_DISCONTINUITY() = 11`

A position discontinuity occurred.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_RENDERED_FIRST_FRAME() = 26`

A frame is rendered for the first time since setting the surface, or since the renderer was reset, or since the stream being rendered was changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_REPEAT_MODE_CHANGED() = 8`

`https://developer.android.com/reference/androidx/media3/common/Player#getRepeatMode()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_SEEK_BACK_INCREMENT_CHANGED() = 16`

`https://developer.android.com/reference/androidx/media3/common/Player#getSeekBackIncrement()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_SEEK_FORWARD_INCREMENT_CHANGED() = 17`

`https://developer.android.com/reference/androidx/media3/common/Player#getSeekForwardIncrement()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_SHUFFLE_MODE_ENABLED_CHANGED() = 9`

`https://developer.android.com/reference/androidx/media3/common/Player#getShuffleModeEnabled()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_SKIP_SILENCE_ENABLED_CHANGED() = 23`

Skipping silences in the audio stream is enabled or disabled.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_SURFACE_SIZE_CHANGED() = 24`

The size of the surface onto which the video is being rendered changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_TIMELINE_CHANGED() = 0`

`https://developer.android.com/reference/androidx/media3/common/Player#getCurrentTimeline()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_TRACKS_CHANGED() = 2`

`https://developer.android.com/reference/androidx/media3/common/Player#getCurrentTracks()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_TRACK_SELECTION_PARAMETERS_CHANGED() = 19`

`https://developer.android.com/reference/androidx/media3/common/Player#getTrackSelectionParameters()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_VIDEO_SIZE_CHANGED() = 25`

`https://developer.android.com/reference/androidx/media3/common/Player#getVideoSize()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#EVENT_VOLUME_CHANGED() = 22`

`https://developer.android.com/reference/androidx/media3/common/Player#getVolume()` changed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#MEDIA_ITEM_TRANSITION_REASON_AUTO() = 1`

Playback has automatically transitioned to the next media item.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED() = 3`

The current media item has changed because of a change in the playlist.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#MEDIA_ITEM_TRANSITION_REASON_REPEAT() = 0`

The media item has been repeated.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#MEDIA_ITEM_TRANSITION_REASON_SEEK() = 2`

A seek to another media item has occurred.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_NONE() = 0`

Playback is not suppressed.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_SCRUBBING() = 4`

Playback is suppressed because the player is currently scrubbing.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_TRANSIENT_AUDIO_FOCUS_LOSS() = 1`

Playback is suppressed due to transient audio focus loss.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT() = 3`

Playback is suppressed due to attempt to play on an unsuitable audio output (e.g. attempt to play on built-in speaker on a Wear OS device).
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_ROUTE() = 2`

**This field is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/common/Player#PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT()` instead.

<br />

`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_AUDIO_BECOMING_NOISY() = 3`

Playback has been paused to avoid becoming noisy.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS() = 2`

Playback has been paused because of a loss of audio focus.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_END_OF_MEDIA_ITEM() = 5`

Playback has been paused at the end of a media item.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_REMOTE() = 4`

Playback has been started or paused because of a remote change.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_SUPPRESSED_TOO_LONG() = 6`

Playback has been paused because playback has been `https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackSuppressionReason()` too long.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST() = 1`

Playback has been started or paused by a call to `https://developer.android.com/reference/androidx/media3/common/Player#setPlayWhenReady(boolean)`.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#REPEAT_MODE_ALL() = 2`

Repeats the entire timeline infinitely.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#REPEAT_MODE_OFF() = 0`

Normal playback without repetition.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#REPEAT_MODE_ONE() = 1`

Repeats the currently playing `https://developer.android.com/reference/androidx/media3/common/MediaItem` infinitely during ongoing playback.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#STATE_BUFFERING() = 2`

The player is not able to immediately play the media, but is doing work toward being able to do so.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#STATE_ENDED() = 4`

The player has finished playing the media.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#STATE_IDLE() = 1`

The player is idle, meaning it holds only limited resources.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#STATE_READY() = 3`

The player is able to immediately play from its current position.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED() = 0`

Timeline changed as a result of a change of the playlist items or the order of the items.
`static final int` `https://developer.android.com/reference/androidx/media3/common/Player#TIMELINE_CHANGE_REASON_SOURCE_UPDATE() = 1`

Timeline changed as a result of a source update (e.g. result of a dynamic update by the played media).

### Inherited methods

From [androidx.media3.session.MediaController](https://developer.android.com/reference/androidx/media3/session/MediaController) `final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#addListener(androidx.media3.common.Player.Listener)(https://developer.android.com/reference/androidx/media3/common/Player.Listener listener)`

Registers a listener to receive all events from the player.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#addMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Adds a media item to the end of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#addMediaItem(int,androidx.media3.common.MediaItem)(int index, https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Adds a media item at the given index of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#addMediaItems(java.util.List<androidx.media3.common.MediaItem>)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems)`

Adds a list of media items to the end of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#addMediaItems(int,java.util.List<androidx.media3.common.MediaItem>)(int index, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems)`

Adds a list of media items at the given index of the playlist.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#canAdvertiseSession()()`

Returns whether the player can be used to advertise a media session.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearMediaItems()()`

Clears the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearVideoSurface()()`

Clears any , , or currently set on the player.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearVideoSurface(android.view.Surface)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/Surface.html surface)`

Clears the onto which video is being rendered if it matches the one passed.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearVideoSurfaceHolder(android.view.SurfaceHolder)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/SurfaceHolder.html surfaceHolder)`

Clears the that holds the onto which video is being rendered if it matches the one passed.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearVideoSurfaceView(android.view.SurfaceView)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/SurfaceView.html surfaceView)`

Clears the onto which video is being rendered if it matches the one passed.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#clearVideoTextureView(android.view.TextureView)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/TextureView.html textureView)`

Clears the onto which video is being rendered if it matches the one passed.
`final void` `[decreaseDeviceVolume](https://developer.android.com/reference/androidx/media3/session/MediaController#decreaseDeviceVolume())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#decreaseDeviceVolume(int)` instead.

<br />

`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#decreaseDeviceVolume(int)(@https://developer.android.com/reference/androidx/media3/common/C.VolumeFlags int flags)`

Decreases the volume of the device.
`final https://developer.android.com/reference/android/os/Looper.html` `https://developer.android.com/reference/androidx/media3/session/MediaController#getApplicationLooper()()`

Returns the `https://developer.android.com/reference/android/os/Looper.html` associated with the application thread that's used to access the player and on which player events are received.
`final https://developer.android.com/reference/androidx/media3/common/AudioAttributes` `https://developer.android.com/reference/androidx/media3/session/MediaController#getAudioAttributes()()`

Returns the attributes for audio playback.
`final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#getAudioSessionId()()`

Returns the audio session identifier, or `https://developer.android.com/reference/androidx/media3/common/C#AUDIO_SESSION_ID_UNSET()` if not set.
`final https://developer.android.com/reference/androidx/media3/common/Player.Commands` `https://developer.android.com/reference/androidx/media3/session/MediaController#getAvailableCommands()()`

Returns the player's currently available `https://developer.android.com/reference/androidx/media3/common/Player.Commands`.
`final https://developer.android.com/reference/androidx/media3/session/SessionCommands` `https://developer.android.com/reference/androidx/media3/session/MediaController#getAvailableSessionCommands()()`

Returns the current available session commands from `https://developer.android.com/reference/androidx/media3/session/MediaController.Listener#onAvailableSessionCommandsChanged(androidx.media3.session.MediaController,androidx.media3.session.SessionCommands)`, or `https://developer.android.com/reference/androidx/media3/session/SessionCommands#EMPTY()` if it is not connected.
`final @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 100) int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getBufferedPercentage()()`

Returns an estimate of the percentage in the current content or ad up to which data is buffered, or 0 if no estimate is available.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getBufferedPosition()()`

Returns an estimate of the position in the current content or ad up to which data is buffered, in milliseconds.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/session/CommandButton>` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#getCommandButtonsForMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Returns the command buttons that are supported for the given `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/SessionToken` `https://developer.android.com/reference/androidx/media3/session/MediaController#getConnectedToken()()`

Returns the `https://developer.android.com/reference/androidx/media3/session/SessionToken` of the connected session, or `null` if it is not connected.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getContentBufferedPosition()()`

If #isPlayingAd() returns true}, returns an estimate of the content position in the current content up to which data is buffered, in milliseconds.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getContentDuration()()`

If #isPlayingAd() returns true}, returns the duration of the current content in milliseconds, or C#TIME_UNSET if the duration is not known.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getContentPosition()()`

If #isPlayingAd() returns true}, returns the content position that will be played once all ads in the ad group have finished playing, in milliseconds.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentAdGroupIndex()()`

If #isPlayingAd() returns true, returns the index of the ad group in the period currently being played.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentAdIndexInAdGroup()()`

If #isPlayingAd() returns true, returns the index of the ad in its ad group.
`final https://developer.android.com/reference/androidx/media3/common/text/CueGroup` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentCues()()`

Returns the current .
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentLiveOffset()()`

Returns the offset of the current playback position from the live edge in milliseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if the current `https://developer.android.com/reference/androidx/media3/common/MediaItem``https://developer.android.com/reference/androidx/media3/common/Player#isCurrentMediaItemLive()` or the offset is unknown.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentManifest()()`

Returns `null`.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/MediaItem` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentMediaItem()()`

Returns the currently playing `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentMediaItemIndex()()`

Returns the index of the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` in the `https://developer.android.com/reference/androidx/media3/common/Player#getCurrentTimeline()`, or the prospective index if the `https://developer.android.com/reference/androidx/media3/common/Player#getCurrentTimeline()` is empty.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentPeriodIndex()()`

Returns the index of the period currently being played.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentPosition()()`

Returns the playback position in the current content or ad, in milliseconds, or the prospective position in milliseconds if the `https://developer.android.com/reference/androidx/media3/common/Player#getCurrentTimeline()` is empty.
`final https://developer.android.com/reference/androidx/media3/common/Timeline` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentTimeline()()`

Returns the current .
`final https://developer.android.com/reference/androidx/media3/common/Tracks` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentTracks()()`

Returns the current tracks.
`final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[getCurrentWindowIndex](https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentWindowIndex())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#getCurrentMediaItemIndex()` instead.

<br />

`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/session/CommandButton>` `https://developer.android.com/reference/androidx/media3/session/MediaController#getCustomLayout()()`

Returns the custom layout.
`final https://developer.android.com/reference/androidx/media3/common/DeviceInfo` `https://developer.android.com/reference/androidx/media3/session/MediaController#getDeviceInfo()()`

Gets the device information.
`final @https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getDeviceVolume()()`

Gets the current volume of the device.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getDuration()()`

Returns the duration of the current content or ad in milliseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if the duration is not known.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getMaxSeekToPreviousPosition()()`

Returns the maximum position for which #seekToPrevious() seeks to the previous \* , in milliseconds.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/session/CommandButton>` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#getMediaButtonPreferences()()`

Returns the media button preferences.
`final https://developer.android.com/reference/androidx/media3/common/MediaItem` `https://developer.android.com/reference/androidx/media3/session/MediaController#getMediaItemAt(int)(int index)`

Returns the `https://developer.android.com/reference/androidx/media3/common/MediaItem` at the given index.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getMediaItemCount()()`

Returns the number of `https://developer.android.com/reference/androidx/media3/common/MediaItem` in the playlist.
`final https://developer.android.com/reference/androidx/media3/common/MediaMetadata` `https://developer.android.com/reference/androidx/media3/session/MediaController#getMediaMetadata()()`

Returns the current combined `https://developer.android.com/reference/androidx/media3/common/MediaMetadata`, or `https://developer.android.com/reference/androidx/media3/common/MediaMetadata#EMPTY()` if not supported.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getNextMediaItemIndex()()`

Returns the index of the that will be played if \* #seekToNextMediaItem() is called, which may depend on the current repeat mode and whether shuffle mode is enabled.
`final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[getNextWindowIndex](https://developer.android.com/reference/androidx/media3/session/MediaController#getNextWindowIndex())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#getNextMediaItemIndex()` instead.

<br />

`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#getPlayWhenReady()()`

Whether playback will proceed when `https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackState()` == `https://developer.android.com/reference/androidx/media3/common/Player#STATE_READY()`.
`final https://developer.android.com/reference/androidx/media3/common/PlaybackParameters` `https://developer.android.com/reference/androidx/media3/session/MediaController#getPlaybackParameters()()`

Returns the currently active playback parameters.
`final int` `@https://developer.android.com/reference/androidx/media3/common/Player.State
https://developer.android.com/reference/androidx/media3/session/MediaController#getPlaybackState()()`

Returns the current `https://developer.android.com/reference/androidx/media3/common/Player.State` of the player.
`final int` `@https://developer.android.com/reference/androidx/media3/common/Player.PlaybackSuppressionReason
https://developer.android.com/reference/androidx/media3/session/MediaController#getPlaybackSuppressionReason()()`

Returns the reason why playback is suppressed even though #getPlayWhenReady() is \*true, or #PLAYBACK_SUPPRESSION_REASON_NONE if playback is not suppressed.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/PlaybackException` `https://developer.android.com/reference/androidx/media3/session/MediaController#getPlayerError()()`

Returns the error that caused playback to fail.
`final https://developer.android.com/reference/androidx/media3/common/MediaMetadata` `https://developer.android.com/reference/androidx/media3/session/MediaController#getPlaylistMetadata()()`

Returns the playlist `https://developer.android.com/reference/androidx/media3/common/MediaMetadata`, as set by `https://developer.android.com/reference/androidx/media3/common/Player#setPlaylistMetadata(androidx.media3.common.MediaMetadata)`, or `https://developer.android.com/reference/androidx/media3/common/MediaMetadata#EMPTY()` if not supported.
`final int` `https://developer.android.com/reference/androidx/media3/session/MediaController#getPreviousMediaItemIndex()()`

Returns the index of the that will be played if \* #seekToPreviousMediaItem() is called, which may depend on the current repeat mode and whether shuffle mode is enabled.
`final int` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[getPreviousWindowIndex](https://developer.android.com/reference/androidx/media3/session/MediaController#getPreviousWindowIndex())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#getPreviousMediaItemIndex()` instead.

<br />

`final int` `@https://developer.android.com/reference/androidx/media3/common/Player.RepeatMode
https://developer.android.com/reference/androidx/media3/session/MediaController#getRepeatMode()()`

Returns the current `https://developer.android.com/reference/androidx/media3/common/Player.RepeatMode` used for playback.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getSeekBackIncrement()()`

Returns the #seekBack() increment.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getSeekForwardIncrement()()`

Returns the #seekForward() increment.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/app/PendingIntent.html` `https://developer.android.com/reference/androidx/media3/session/MediaController#getSessionActivity()()`

Returns an intent for launching UI associated with the session if exists, or `null`.
`final https://developer.android.com/reference/android/os/Bundle.html` `https://developer.android.com/reference/androidx/media3/session/MediaController#getSessionExtras()()`

Returns the session extras.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#getShuffleModeEnabled()()`

Returns whether shuffling of media items is enabled.
`final https://developer.android.com/reference/androidx/media3/common/util/Size` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#getSurfaceSize()()`

Gets the size of the surface on which the video is rendered.
`final long` `https://developer.android.com/reference/androidx/media3/session/MediaController#getTotalBufferedDuration()()`

Returns an estimate of the total buffered duration from the current position, in milliseconds.
`final https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters` `https://developer.android.com/reference/androidx/media3/session/MediaController#getTrackSelectionParameters()()`

Returns the parameters constraining the track selection.
`final https://developer.android.com/reference/androidx/media3/common/VideoSize` `https://developer.android.com/reference/androidx/media3/session/MediaController#getVideoSize()()`

Gets the size of the video.
`final @https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0, to = 1) float` `https://developer.android.com/reference/androidx/media3/session/MediaController#getVolume()()`

Returns the audio volume, with 0 being silence and 1 being unity gain (signal unchanged).
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#hasNextMediaItem()()`

Returns whether a next `https://developer.android.com/reference/androidx/media3/common/MediaItem` exists, which may depend on the current repeat mode and whether shuffle mode is enabled.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#hasPreviousMediaItem()()`

Returns whether a previous media item exists, which may depend on the current repeat mode and whether shuffle mode is enabled.
`final void` `[increaseDeviceVolume](https://developer.android.com/reference/androidx/media3/session/MediaController#increaseDeviceVolume())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#increaseDeviceVolume(int)` instead.

<br />

`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#increaseDeviceVolume(int)(@https://developer.android.com/reference/androidx/media3/common/C.VolumeFlags int flags)`

Increases the volume of the device.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isCommandAvailable(int)(@https://developer.android.com/reference/androidx/media3/common/Player.Command int command)`

Returns whether the provided `https://developer.android.com/reference/androidx/media3/common/Player.Command` is available.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isConnected()()`

Returns whether this controller is connected to a `https://developer.android.com/reference/androidx/media3/session/MediaSession` or not.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemDynamic()()`

Returns whether the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` is dynamic (may change when the `https://developer.android.com/reference/androidx/media3/common/Timeline` is updated), or `false` if the `https://developer.android.com/reference/androidx/media3/common/Timeline` is empty.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemLive()()`

Returns whether the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` is live, or `false` if the `https://developer.android.com/reference/androidx/media3/common/Timeline` is empty.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemSeekable()()`

Returns whether the current `https://developer.android.com/reference/androidx/media3/common/MediaItem` is seekable, or `false` if the `https://developer.android.com/reference/androidx/media3/common/Timeline` is empty.
`final boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[isCurrentWindowDynamic](https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentWindowDynamic())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemDynamic()` instead.

<br />

`final boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[isCurrentWindowLive](https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentWindowLive())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemLive()` instead.

<br />

`final boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[isCurrentWindowSeekable](https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentWindowSeekable())()`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#isCurrentMediaItemSeekable()` instead.

<br />

`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isDeviceMuted()()`

Gets whether the device is muted or not.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isLoading()()`

Whether the player is currently loading the source.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isPlaying()()`

Returns whether the player is playing, i.e. `https://developer.android.com/reference/androidx/media3/common/Player#getCurrentPosition()` is advancing.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isPlayingAd()()`

Returns whether the player is currently playing an ad.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isSessionCommandAvailable(int)(
@https://developer.android.com/reference/androidx/media3/session/SessionCommand.CommandCode int sessionCommandCode
)`

Returns whether the `https://developer.android.com/reference/androidx/media3/session/SessionCommand.CommandCode` is available.
`final boolean` `https://developer.android.com/reference/androidx/media3/session/MediaController#isSessionCommandAvailable(androidx.media3.session.SessionCommand)(https://developer.android.com/reference/androidx/media3/session/SessionCommand sessionCommand)`

Returns whether the `https://developer.android.com/reference/androidx/media3/session/SessionCommand` is available.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#moveMediaItem(int,int)(int currentIndex, int newIndex)`

Moves the media item at the current index to the new index.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#moveMediaItems(int,int,int)(int fromIndex, int toIndex, int newIndex)`

Moves the media item range to the new index.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#mute()()`

Sets the audio volume to 0.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#pause()()`

Pauses playback.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#play()()`

Resumes playback as soon as `https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackState()` == `https://developer.android.com/reference/androidx/media3/common/Player#STATE_READY()`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#prepare()()`

Prepares the player.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#release()()`

Releases the connection between `https://developer.android.com/reference/androidx/media3/session/MediaController` and `https://developer.android.com/reference/androidx/media3/session/MediaSession`.
`static void` `https://developer.android.com/reference/androidx/media3/session/MediaController#releaseFuture(java.util.concurrent.Future<? extends androidx.media3.session.MediaController>)(https://developer.android.com/reference/java/util/concurrent/Future.html<https://developer.android.com/reference/androidx/media3/session/MediaController> controllerFuture)`

Releases the future controller returned by `https://developer.android.com/reference/androidx/media3/session/MediaController.Builder#buildAsync()`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#removeListener(androidx.media3.common.Player.Listener)(https://developer.android.com/reference/androidx/media3/common/Player.Listener listener)`

Unregister a listener registered through `https://developer.android.com/reference/androidx/media3/common/Player#addListener(androidx.media3.common.Player.Listener)`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#removeMediaItem(int)(int index)`

Removes the media item at the given index of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#removeMediaItems(int,int)(int fromIndex, int toIndex)`

Removes a range of media items from the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#replaceMediaItem(int,androidx.media3.common.MediaItem)(int index, https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Replaces the media item at the given index of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#replaceMediaItems(int,int,java.util.List<androidx.media3.common.MediaItem>)(
int fromIndex,
int toIndex,
https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems
)`

Replaces the media items at the given range of the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekBack()()`

Seeks back in the current by #getSeekBackIncrement() milliseconds.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekForward()()`

Seeks forward in the current by #getSeekForwardIncrement() milliseconds.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekTo(long)(long positionMs)`

Seeks to a position specified in milliseconds in the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekTo(int,long)(int mediaItemIndex, long positionMs)`

Seeks to a position specified in milliseconds in the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToDefaultPosition()()`

Seeks to the default position associated with the current `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToDefaultPosition(int)(int mediaItemIndex)`

Seeks to the default position associated with the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToNext()()`

Seeks to a later position in the current or next (if available).
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToNextMediaItem()()`

Seeks to the default position of the next , which may depend on the current repeat mode and whether shuffle mode is enabled.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToPrevious()()`

Seeks to an earlier position in the current or previous (if available).
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#seekToPreviousMediaItem()()`

Seeks to the default position of the previous , which may depend on the current repeat mode and whether shuffle mode is enabled.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `https://developer.android.com/reference/androidx/media3/session/MediaController#sendCustomCommand(androidx.media3.session.SessionCommand,android.os.Bundle)(https://developer.android.com/reference/androidx/media3/session/SessionCommand command, https://developer.android.com/reference/android/os/Bundle.html args)`

Sends a custom command to the session.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#sendCustomCommand(androidx.media3.session.SessionCommand,android.os.Bundle,androidx.media3.session.MediaController.ProgressListener)(
https://developer.android.com/reference/androidx/media3/session/SessionCommand command,
https://developer.android.com/reference/android/os/Bundle.html args,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaController.ProgressListener progressListener
)`

Sends a custom command to the session.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#sendCustomCommand(androidx.media3.session.SessionCommand,androidx.media3.common.MediaItem,android.os.Bundle)(
https://developer.android.com/reference/androidx/media3/session/SessionCommand command,
https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem,
https://developer.android.com/reference/android/os/Bundle.html args
)`

Sends a custom command to the session for the given `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/session/MediaController#sendCustomCommand(androidx.media3.session.SessionCommand,androidx.media3.common.MediaItem,android.os.Bundle,androidx.media3.session.MediaController.ProgressListener)(
https://developer.android.com/reference/androidx/media3/session/SessionCommand command,
https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem,
https://developer.android.com/reference/android/os/Bundle.html args,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaController.ProgressListener progressListener
)`

Sends a custom command to the session for the given `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setAudioAttributes(androidx.media3.common.AudioAttributes,boolean)(
https://developer.android.com/reference/androidx/media3/common/AudioAttributes audioAttributes,
boolean handleAudioFocus
)`

Sets the attributes for audio playback, used by the underlying audio track.
`final void` `[setDeviceMuted](https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceMuted(boolean))(boolean muted)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceMuted(boolean,int)` instead.

<br />

`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceMuted(boolean,int)(boolean muted, @https://developer.android.com/reference/androidx/media3/common/C.VolumeFlags int flags)`

Sets the mute state of the device.
`final void` `[setDeviceVolume](https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceVolume(int))(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int volume)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceVolume(int,int)` instead.

<br />

`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setDeviceVolume(int,int)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int volume, @https://developer.android.com/reference/androidx/media3/common/C.VolumeFlags int flags)`

Sets the volume of the device with volume flags.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Clears the playlist, adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem` and resets the position to the default position.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItem(androidx.media3.common.MediaItem,boolean)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem, boolean resetPosition)`

Clears the playlist and adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItem(androidx.media3.common.MediaItem,long)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem, long startPositionMs)`

Clears the playlist and adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItems(java.util.List<androidx.media3.common.MediaItem>)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems)`

Clears the playlist, adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem` and resets the position to the default position.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItems(java.util.List<androidx.media3.common.MediaItem>,boolean)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems, boolean resetPosition)`

Clears the playlist and adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setMediaItems(java.util.List<androidx.media3.common.MediaItem>,int,long)(
https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems,
int startIndex,
long startPositionMs
)`

Clears the playlist and adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setPlayWhenReady(boolean)(boolean playWhenReady)`

Sets whether playback should proceed when `https://developer.android.com/reference/androidx/media3/common/Player#getPlaybackState()` == `https://developer.android.com/reference/androidx/media3/common/Player#STATE_READY()`.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setPlaybackParameters(androidx.media3.common.PlaybackParameters)(https://developer.android.com/reference/androidx/media3/common/PlaybackParameters playbackParameters)`

Attempts to set the playback parameters.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setPlaybackSpeed(float)(float speed)`

Changes the rate at which playback occurs.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setPlaylistMetadata(androidx.media3.common.MediaMetadata)(https://developer.android.com/reference/androidx/media3/common/MediaMetadata playlistMetadata)`

Sets the playlist .
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `https://developer.android.com/reference/androidx/media3/session/MediaController#setRating(androidx.media3.common.Rating)(https://developer.android.com/reference/androidx/media3/common/Rating rating)`

Requests that the connected `https://developer.android.com/reference/androidx/media3/session/MediaSession` rates the current media item.
`final https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/SessionResult>` `https://developer.android.com/reference/androidx/media3/session/MediaController#setRating(java.lang.String,androidx.media3.common.Rating)(https://developer.android.com/reference/java/lang/String.html mediaId, https://developer.android.com/reference/androidx/media3/common/Rating rating)`

Requests that the connected `https://developer.android.com/reference/androidx/media3/session/MediaSession` rates the media.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setRepeatMode(int)(@https://developer.android.com/reference/androidx/media3/common/Player.RepeatMode int repeatMode)`

Sets the `https://developer.android.com/reference/androidx/media3/common/Player.RepeatMode` to be used for playback.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setShuffleModeEnabled(boolean)(boolean shuffleModeEnabled)`

Sets whether shuffling of media items is enabled.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters)(https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters parameters)`

Sets the parameters constraining the track selection.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setVideoSurface(android.view.Surface)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/Surface.html surface)`

Sets the onto which video will be rendered.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setVideoSurfaceHolder(android.view.SurfaceHolder)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/SurfaceHolder.html surfaceHolder)`

Sets the that holds the onto which video will be rendered.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setVideoSurfaceView(android.view.SurfaceView)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/SurfaceView.html surfaceView)`

Sets the onto which video will be rendered.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setVideoTextureView(android.view.TextureView)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/TextureView.html textureView)`

Sets the onto which video will be rendered.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#setVolume(float)(@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0, to = 1) float volume)`

Sets the audio volume, valid values are between 0 (silence) and 1 (unity gain, signal unchanged), inclusive.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#stop()()`

Stops playback without resetting the playlist.
`final void` `https://developer.android.com/reference/androidx/media3/session/MediaController#unmute()()`

If the audio volume is 0, sets the audio volume to a non-zero value decided by the Player to be the most appropriate.
From [androidx.media3.common.Player](https://developer.android.com/reference/androidx/media3/common/Player) `abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#addListener(androidx.media3.common.Player.Listener)(https://developer.android.com/reference/androidx/media3/common/Player.Listener listener)`

Registers a listener to receive all events from the player.
`abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#removeListener(androidx.media3.common.Player.Listener)(https://developer.android.com/reference/androidx/media3/common/Player.Listener listener)`

Unregister a listener registered through `https://developer.android.com/reference/androidx/media3/common/Player#addListener(androidx.media3.common.Player.Listener)`.
`abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#setMediaItems(java.util.List<androidx.media3.common.MediaItem>,int,long)(
https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/MediaItem> mediaItems,
int startIndex,
long startPositionMs
)`

Clears the playlist and adds the specified `https://developer.android.com/reference/androidx/media3/common/MediaItem`.
`abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#setPlaybackSpeed(float)(@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0, fromInclusive = false) float speed)`

Changes the rate at which playback occurs.
`abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#setPlaylistMetadata(androidx.media3.common.MediaMetadata)(https://developer.android.com/reference/androidx/media3/common/MediaMetadata mediaMetadata)`

Sets the playlist `https://developer.android.com/reference/androidx/media3/common/MediaMetadata`.
`abstract void` `https://developer.android.com/reference/androidx/media3/common/Player#setVolume(float)(@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0, to = 1.0) float volume)`

Sets the audio volume, valid values are between 0 (silence) and 1 (unity gain, signal unchanged), inclusive.

## Public methods

### getChildren

```
public ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> getChildren(
    String parentId,
    @IntRange(from = 0) int page,
    @IntRange(from = 1) int pageSize,
    @Nullable MediaLibraryService.LibraryParams params
)
```

Returns the children under a parent id.

If it's successfully completed, `https://developer.android.com/reference/androidx/media3/session/LibraryResult#value()` will have the children.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html parentId` | A non-empty parent id for getting the children. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int page` | A page number to get the paginated result starting from `0`. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) int pageSize` | A page size to get the paginated result. Should be greater than `0`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params` | Optional parameters. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/common/MediaItem>>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### getItem

```
public ListenableFuture<LibraryResult<MediaItem>> getItem(String mediaId)
```

Returns the media item with the given media id.

If it's successfully completed, `https://developer.android.com/reference/androidx/media3/session/LibraryResult#value()` will have the media item.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html mediaId` | A non-empty media id. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/androidx/media3/common/MediaItem>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### getLibraryRoot

```
public ListenableFuture<LibraryResult<MediaItem>> getLibraryRoot(@Nullable MediaLibraryService.LibraryParams params)
```

Returns the library root item.

If it's successfully completed, `https://developer.android.com/reference/androidx/media3/session/LibraryResult#value()` will have the library root item.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params` | The optional parameters for getting library root item. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/androidx/media3/common/MediaItem>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### getSearchResult

```
public ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> getSearchResult(
    String query,
    @IntRange(from = 0) int page,
    @IntRange(from = 1) int pageSize,
    @Nullable MediaLibraryService.LibraryParams params
)
```

Returns the search result from the library service.

If it's successfully completed, `https://developer.android.com/reference/androidx/media3/session/LibraryResult#value()` will have the search result.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html query` | A non-empty search query that you've specified with `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#search(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int page` | A page number to get the paginated result starting from `0`. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 1) int pageSize` | A page size to get the paginated result. Should be greater than `0`. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params` | Optional parameters. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/androidx/media3/common/MediaItem>>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### search

```
public ListenableFuture<LibraryResult<Void>> search(String query, @Nullable MediaLibraryService.LibraryParams params)
```

Requests a search from the library service.

Returned `https://developer.android.com/reference/androidx/media3/session/LibraryResult` will only tell whether the attempt to search was successful. For getting the search result, listen to `https://developer.android.com/reference/androidx/media3/session/MediaBrowser.Listener#onSearchResultChanged(androidx.media3.session.MediaBrowser,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)` and call `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getSearchResult(java.lang.String,int,int,androidx.media3.session.MediaLibraryService.LibraryParams)`}.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html query` | A non-empty search query. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params` | Optional parameters. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### subscribe

```
public ListenableFuture<LibraryResult<Void>> subscribe(
    String parentId,
    @Nullable MediaLibraryService.LibraryParams params
)
```

Subscribes to a parent id for changes to its children. When there's a change, `https://developer.android.com/reference/androidx/media3/session/MediaBrowser.Listener#onChildrenChanged(androidx.media3.session.MediaBrowser,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)` will be called with the `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams`. You may call `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#getChildren(java.lang.String,int,int,androidx.media3.session.MediaLibraryService.LibraryParams)` to get the children.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html parentId` | A non-empty parent id to subscribe to. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams params` | Optional parameters. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |

### unsubscribe

```
public ListenableFuture<LibraryResult<Void>> unsubscribe(String parentId)
```

Unsubscribes from a parent id for changes to its children, which was previously subscribed by `https://developer.android.com/reference/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`.

This unsubscribes from all previous subscriptions with the parent id, regardless of the `https://developer.android.com/reference/androidx/media3/session/MediaLibraryService.LibraryParams` that was previously given.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html parentId` | A non-empty parent id to unsubscribe from. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/androidx/media3/session/LibraryResult<https://developer.android.com/reference/java/lang/Void.html>>` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html` of `https://developer.android.com/reference/androidx/media3/session/LibraryResult` that represents the pending result. |