# MediaLibraryService.MediaLibrarySession

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/MediaLibraryService.java+class:androidx.media3.session.MediaLibraryService.MediaLibrarySession)

*** ** * ** ***


```
class MediaLibraryService.MediaLibrarySession : MediaSession
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.media3.session.MediaSession](https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession) ||
|   | ↳ | [androidx.media3.session.MediaLibraryService.MediaLibrarySession](https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession) |

*** ** * ** ***

An extended `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession` for the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService`. Build an instance with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Builder` and return it from `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSessionService#onGetSession(androidx.media3.session.MediaSession.ControllerInfo)`.

## Backward compatibility with legacy media browser APIs

A library session supports connection from both `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser` and `
android.support.v4.media.MediaBrowserCompat`, but the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` may not be precise. Here are the details.

| SDK version | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo#getPackageName()`for legacy browser | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo#getUid()`for legacy browser |
|---|---|---|
| `SDK_INT < 28` for `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.Callback#onConnectAsync(androidx.media3.session.MediaSession,androidx.media3.session.MediaSession.ControllerInfo)` and `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onGetLibraryRoot(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.MediaLibraryService.LibraryParams)` | Actual package name via `https://developer.android.com/reference/android/content/Context.html#getPackageName()` | Actual UID |
| `SDK_INT < 28` for other `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo#LEGACY_CONTROLLER_PACKAGE_NAME()` | Negative value |
| `28 <= SDK_INT` | Actual package name via `https://developer.android.com/reference/android/content/Context.html#getPackageName()` | Actual UID |
[Summary when controller info isn't precise]

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Builder` A builder for `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession`. |
| `interface https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback : https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.Callback` An extended `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.Callback` for the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession`. |

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#LIBRARY_ERROR_REPLICATION_MODE_FATAL() = 1` `https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError` returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` as part of a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` are replicated to the platform session as a fatal error. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#LIBRARY_ERROR_REPLICATION_MODE_NONE() = 0` No library service errors are replicated. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#LIBRARY_ERROR_REPLICATION_MODE_NON_FATAL() = 2` `https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError` returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` as part of a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` are replicated to the platform session as a non-fatal error. |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#clearReplicatedLibraryError()()` Clears the replicated library error in the platform session that was set when a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` with an error result code was returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` that is replicated and if `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Builder#setLibraryErrorReplicationMode(int)`. |
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!>!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#getSubscribedControllers(java.lang.String)(mediaId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!)` Returns the controllers that are currently subscribed to the given `mediaId`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#notifyChildrenChanged(java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)( parentId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams? )` Notifies all browsers that are `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` to the parent of the change to its children regardless of the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams` given by `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#notifyChildrenChanged(androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)( browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!, parentId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams? )` Notifies a browser that is `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` to a browsable media item that the children of the item have changed. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#notifySearchResultChanged(androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)( browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!, query: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams? )` Notifies a browser of a change to the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSearch(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` result. |

### Inherited functions

From [androidx.media3.session.MediaSession](https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#broadcastCustomCommand(androidx.media3.session.SessionCommand,android.os.Bundle)(command: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionCommand!, args: https://developer.android.com/reference/android/os/Bundle.html!)`

Broadcasts a custom command to all connected controllers.
`java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getBitmapDimensionLimit(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html!)`

Returns the bitmap dimension limit in pixels.
`https://developer.android.com/reference/kotlin/androidx/media3/common/util/BitmapLoader!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getBitmapLoader()()`

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/common/util/BitmapLoader`.
`(https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!>!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getConnectedControllers()()`

Returns the list of connected controllers.
`https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo?` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getControllerForCurrentRequest()()`

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` for the controller that sent the current request for a `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` method.
`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getCustomLayout()()`

Returns the custom layout of the session.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getId()()`

Returns the session ID.
`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getMediaButtonPreferences()()`

Returns the media button preferences of the session.
`https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo?` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getMediaNotificationControllerInfo()()`

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` of the media notification controller.
`https://developer.android.com/reference/android/media/session/MediaSession.Token.html!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getPlatformToken()()`

Returns the platform `https://developer.android.com/reference/android/media/session/MediaSession.Token.html` of the `https://developer.android.com/reference/android/media/session/MediaSession.html` created internally by this session.
`https://developer.android.com/reference/kotlin/androidx/media3/common/Player!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getPlayer()()`

Returns the underlying `https://developer.android.com/reference/kotlin/androidx/media3/common/Player`.
`https://developer.android.com/reference/android/app/PendingIntent.html?` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getSessionActivity()()`

Returns the `https://developer.android.com/reference/android/app/PendingIntent.html` to launch `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.Builder#setSessionActivity(android.app.PendingIntent)` or null if not set.
`https://developer.android.com/reference/android/os/Bundle.html!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getSessionExtras()()`

Returns the session extras.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getShowPlayButtonIfPlaybackIsSuppressed()()`

Returns whether a play button is shown if playback is `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#getPlaybackSuppressionReason()`.
`https://developer.android.com/reference/kotlin/androidx/media3/session/SessionToken!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getToken()()`

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/session/SessionToken` for creating `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController` instances.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#isAutoCompanionController(androidx.media3.session.MediaSession.ControllerInfo)(controllerInfo: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!)`

Returns whether the given `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` belongs to an Android Auto companion app controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#isAutomotiveController(androidx.media3.session.MediaSession.ControllerInfo)(controllerInfo: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!)`

Returns whether the given `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` belongs to an Automotive OS controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#isMediaNotificationController(androidx.media3.session.MediaSession.ControllerInfo)(
controllerInfo: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!
)`

Returns whether the given media controller info belongs to the media notification controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#release()()`

Releases the session and disconnects all connected controllers.
`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/kotlin/androidx/media3/session/SessionResult!>!` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#sendCustomCommand(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.SessionCommand,android.os.Bundle)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
command: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionCommand!,
args: https://developer.android.com/reference/android/os/Bundle.html!
)`

Sends a custom command to a specific controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#sendError(androidx.media3.session.SessionError)(sessionError: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError!)`

Sends a non-fatal error to all connected controllers.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#sendError(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.SessionError)(
controllerInfo: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
sessionError: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError!
)`

Sends a non-fatal error to the given controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setAvailableCommands(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.SessionCommands,androidx.media3.common.Player.Commands)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
sessionCommands: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionCommands!,
playerCommands: https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Commands!
)`

Sets the new available commands for the controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setCustomLayout(java.util.List<androidx.media3.session.CommandButton>)(layout: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!)`

Sets the custom layout for all controllers.
`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/kotlin/androidx/media3/session/SessionResult!>!` `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setCustomLayout(androidx.media3.session.MediaSession.ControllerInfo,java.util.List<androidx.media3.session.CommandButton>)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
layout: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!
)`

Sets the custom layout for the given controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setMediaButtonPreferences(java.util.List<androidx.media3.session.CommandButton>)(
mediaButtonPreferences: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!
)`

Sets the media button preferences for all controllers.
`https://guava.dev/releases/snapshot-android/api/docs/com/google/common/util/concurrent/ListenableFuture.html<https://developer.android.com/reference/kotlin/androidx/media3/session/SessionResult!>!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setMediaButtonPreferences(androidx.media3.session.MediaSession.ControllerInfo,java.util.List<androidx.media3.session.CommandButton>)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
mediaButtonPreferences: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/session/CommandButton!>!
)`

Sets the media button preferences for the given controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setPlaybackException(androidx.media3.common.PlaybackException)(playbackException: https://developer.android.com/reference/kotlin/androidx/media3/common/PlaybackException?)`

Sets the playback exception for all connected controllers.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setPlaybackException(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.common.PlaybackException)(
controllerInfo: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
playbackException: https://developer.android.com/reference/kotlin/androidx/media3/common/PlaybackException?
)`

Sets the playback exception for the given controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setPlayer(androidx.media3.common.Player)(player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player!)`

Sets the underlying `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` for this session to dispatch incoming events to.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setSessionActivity(android.app.PendingIntent)(activityPendingIntent: https://developer.android.com/reference/android/app/PendingIntent.html?)`

Updates the session activity that was set when `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.Builder#setSessionActivity(android.app.PendingIntent)`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setSessionActivity(androidx.media3.session.MediaSession.ControllerInfo,android.app.PendingIntent)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
activityPendingIntent: https://developer.android.com/reference/android/app/PendingIntent.html?
)`

Sends the session activity to the connected controller.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setSessionExtras(android.os.Bundle)(sessionExtras: https://developer.android.com/reference/android/os/Bundle.html!)`

Sets the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#getSessionExtras()` and sends them to connected controllers.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setSessionExtras(androidx.media3.session.MediaSession.ControllerInfo,android.os.Bundle)(
controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!,
sessionExtras: https://developer.android.com/reference/android/os/Bundle.html!
)`

Sends the session extras to the connected controller.

## Constants

### LIBRARY_ERROR_REPLICATION_MODE_FATAL

```
@UnstableApi
const val LIBRARY_ERROR_REPLICATION_MODE_FATAL = 1: Int
```

`https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError` returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` as part of a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` are replicated to the platform session as a fatal error.

### LIBRARY_ERROR_REPLICATION_MODE_NONE

```
@UnstableApi
const val LIBRARY_ERROR_REPLICATION_MODE_NONE = 0: Int
```

No library service errors are replicated.

### LIBRARY_ERROR_REPLICATION_MODE_NON_FATAL

```
@UnstableApi
const val LIBRARY_ERROR_REPLICATION_MODE_NON_FATAL = 2: Int
```

`https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError` returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` as part of a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` are replicated to the platform session as a non-fatal error.

## Public functions

### clearReplicatedLibraryError

```
@UnstableApi
fun clearReplicatedLibraryError(): Unit
```

Clears the replicated library error in the platform session that was set when a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult` with an error result code was returned by the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` that is replicated and if `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Builder#setLibraryErrorReplicationMode(int)`.

Note: If a `https://developer.android.com/reference/kotlin/androidx/media3/session/LibraryResult#RESULT_SUCCESS()` was returned by a method of `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback` that is considered for replication, the error is cleared automatically by the library.

Calling this method updates the platform session playback state in case there was a replicated error set. If no error was set, calling this method is a no-op.

### getSubscribedControllers

```
@UnstableApi
fun getSubscribedControllers(mediaId: String!): ImmutableList<MediaSession.ControllerInfo!>!
```

Returns the controllers that are currently subscribed to the given `mediaId`.

Use the returned `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo` to call `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#notifyChildrenChanged(androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)` in case the children of the media item with the given media ID have changed and the connected controller should fetch them again.

Note that calling `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession#notifyChildrenChanged(androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)` for a controller that didn't subscribe to the media ID results in a no-op.

| Parameters |
|---|---|
| `mediaId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The ID of the media item for which to get subscribed controllers. |

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableList.html<https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!>!` | A list with the subscribed controllers, may be empty. |

### notifyChildrenChanged

```
fun notifyChildrenChanged(
    parentId: String!,
    itemCount: @IntRange(from = 0) Int,
    params: MediaLibraryService.LibraryParams?
): Unit
```

Notifies all browsers that are `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` to the parent of the change to its children regardless of the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams` given by `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`.

| Parameters |
|---|---|
| `parentId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The non-empty id of the parent with changes to its children. |
| `itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of children. |
| `params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams?` | The optional parameters. |

### notifyChildrenChanged

```
fun notifyChildrenChanged(
    browser: MediaSession.ControllerInfo!,
    parentId: String!,
    itemCount: @IntRange(from = 0) Int,
    params: MediaLibraryService.LibraryParams?
): Unit
```

Notifies a browser that is `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` to a browsable media item that the children of the item have changed. This method is also called immediately after subscribing was successful.

| Parameters |
|---|---|
| `browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!` | The browser to notify. |
| `parentId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The non-empty id of the parent with changes to its children. |
| `itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of children, or `https://developer.android.com/reference/java/lang/Integer.html#MAX_VALUE` if unknown. |
| `params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams?` | The parameters given by `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSubscribe(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |

### notifySearchResultChanged

```
fun notifySearchResultChanged(
    browser: MediaSession.ControllerInfo!,
    query: String!,
    itemCount: @IntRange(from = 0) Int,
    params: MediaLibraryService.LibraryParams?
): Unit
```

Notifies a browser of a change to the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSearch(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)` result.

| Parameters |
|---|---|
| `browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession.ControllerInfo!` | The browser to notify. |
| `query: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The non-empty search query given by `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSearch(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |
| `itemCount: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of items that have been found in the search. |
| `params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams?` | The parameters given by `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.MediaLibrarySession.Callback#onSearch(androidx.media3.session.MediaLibraryService.MediaLibrarySession,androidx.media3.session.MediaSession.ControllerInfo,java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |