# MediaBrowser.Listener

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.Listener)

*** ** * ** ***

<br />

```
interface MediaBrowser.Listener : MediaController.Listener
```

<br />

*** ** * ** ***

A listener for events from `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService`.

The methods will be called from the application thread associated with the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController#getApplicationLooper()` of the controller.

## Summary

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser.Listener#onChildrenChanged(androidx.media3.session.MediaBrowser,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)( browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser!, 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? )` Called when there's a change in the parent's children after you've subscribed to the parent with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#subscribe(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/MediaBrowser.Listener#onSearchResultChanged(androidx.media3.session.MediaBrowser,java.lang.String,int,androidx.media3.session.MediaLibraryService.LibraryParams)( browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser!, 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? )` Called when there's change in the search result requested by the previous `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#search(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |

### Inherited functions

From [androidx.media3.session.MediaController.Listener](https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController.Listener) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController.Listener#onAvailableSessionCommandsChanged(androidx.media3.session.MediaController,androidx.media3.session.SessionCommands)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

commands: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionCommands!

)`

Called when the available session commands are changed by session.
`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/MediaController.Listener#onCustomCommand(androidx.media3.session.MediaController,androidx.media3.session.SessionCommand,android.os.Bundle)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

command: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionCommand!,

args: https://developer.android.com/reference/android/os/Bundle.html!

)`

Called when the session sends a custom command through `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#sendCustomCommand(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.SessionCommand,android.os.Bundle)`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController.Listener#onCustomLayoutChanged(androidx.media3.session.MediaController,java.util.List<androidx.media3.session.CommandButton>)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

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

)`

Called when the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController#getCustomLayout()` changed.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController.Listener#onDisconnected(androidx.media3.session.MediaController)(controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!)`

Called when the controller is disconnected from the session.
`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/MediaController.Listener#onError(androidx.media3.session.MediaController,androidx.media3.session.SessionError)(controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!, sessionError: https://developer.android.com/reference/kotlin/androidx/media3/session/SessionError!)`

Called when an non-fatal error `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#sendError(androidx.media3.session.MediaSession.ControllerInfo,androidx.media3.session.SessionError)` is received.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController.Listener#onExtrasChanged(androidx.media3.session.MediaController,android.os.Bundle)(controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!, extras: https://developer.android.com/reference/android/os/Bundle.html!)`

Called when the session extras are set on the session side.
`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/MediaController.Listener#onMediaButtonPreferencesChanged(androidx.media3.session.MediaController,java.util.List<androidx.media3.session.CommandButton>)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

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

)`

Called when the `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController#getMediaButtonPreferences()` changed.
`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/MediaController.Listener#onSessionActivityChanged(androidx.media3.session.MediaController,android.app.PendingIntent)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

sessionActivity: https://developer.android.com/reference/android/app/PendingIntent.html?

)`

Called when the `https://developer.android.com/reference/android/app/PendingIntent.html` to launch the session activity `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setSessionActivity(android.app.PendingIntent)` on the session side.
`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/MediaController.Listener#onSetCustomLayout(androidx.media3.session.MediaController,java.util.List<androidx.media3.session.CommandButton>)(

controller: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaController!,

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

)`

Called when the session sets the custom layout through `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaSession#setCustomLayout(androidx.media3.session.MediaSession.ControllerInfo,java.util.List<androidx.media3.session.CommandButton>)`.

## Public functions

### onChildrenChanged

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

Called when there's a change in the parent's children after you've subscribed to the parent with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`.

This method is called when the app calls `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 the parent, or it is called by the library immediately after calling `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`.

| Parameters |
|---|---|
| `browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser!` | The browser for this event. |
| `parentId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The non-empty parent id that you've specified with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#subscribe(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 children, or `https://developer.android.com/reference/java/lang/Integer.html#MAX_VALUE` if the number of items is unknown. |
| `params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams?` | The optional parameters from the library service. Can be differ from the ` params` that you've specified with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#subscribe(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |

### onSearchResultChanged

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

Called when there's change in the search result requested by the previous `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#search(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`.

| Parameters |
|---|---|
| `browser: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser!` | The browser for this event. |
| `query: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | The non-empty search query that you've specified with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#search(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 for the search result. |
| `params: https://developer.android.com/reference/kotlin/androidx/media3/session/MediaLibraryService.LibraryParams?` | The optional parameters from the library service. Can be differ from the ` params` that you've specified with `https://developer.android.com/reference/kotlin/androidx/media3/session/MediaBrowser#search(java.lang.String,androidx.media3.session.MediaLibraryService.LibraryParams)`. |