MediaController.Listener


public interface MediaController.Listener

Known direct subclasses
MediaBrowser.Listener

A listener for events from MediaLibraryService.


A listener for events and incoming commands from MediaSession.

The methods will be called from the application thread associated with the application looper of the controller.

Summary

Public methods

default void

Called when the available session commands are changed by session.

default ListenableFuture<SessionResult>
onCustomCommand(
    MediaController controller,
    SessionCommand command,
    Bundle args
)

Called when the session sends a custom command through sendCustomCommand.

default void

Called when the custom layout changed.

default void

Called when the controller is disconnected from the session.

default void
onExtrasChanged(MediaController controller, Bundle extras)

Called when the session extras are set on the session side.

default void
@UnstableApi
onSessionActivityChanged(
    MediaController controller,
    PendingIntent sessionActivity
)

Called when the PendingIntent to launch the session activity has been changed on the session side.

default ListenableFuture<SessionResult>
onSetCustomLayout(
    MediaController controller,
    List<CommandButton> layout
)

Called when the session sets the custom layout through setCustomLayout.

Public methods

onAvailableSessionCommandsChanged

default void onAvailableSessionCommandsChanged(
    MediaController controller,
    SessionCommands commands
)

Called when the available session commands are changed by session.

Parameters
MediaController controller

The controller.

SessionCommands commands

The new available session commands.

onCustomCommand

default ListenableFuture<SessionResultonCustomCommand(
    MediaController controller,
    SessionCommand command,
    Bundle args
)

Called when the session sends a custom command through sendCustomCommand.

Return a ListenableFuture to reply with a SessionResult to the session asynchronously. You can also return a SessionResult directly by using Guava's immediateFuture.

The default implementation returns ListenableFuture of RESULT_ERROR_NOT_SUPPORTED.

Parameters
MediaController controller

The controller.

SessionCommand command

The custom command.

Bundle args

The additional arguments. May be empty.

Returns
ListenableFuture<SessionResult>

The result of handling the custom command.

onCustomLayoutChanged

@UnstableApi
default void onCustomLayoutChanged(
    MediaController controller,
    List<CommandButton> layout
)

Called when the custom layout changed.

The custom layout can change when either the session changes the custom layout, or when the session changes the available commands for a controller that affect whether buttons of the custom layout are enabled or disabled.

Parameters
MediaController controller

The controller.

List<CommandButton> layout

The ordered list of command buttons.

onDisconnected

default void onDisconnected(MediaController controller)

Called when the controller is disconnected from the session. The controller becomes unavailable afterwards and this listener won't be called anymore.

It will be also called after the release, so you can put clean up code here. You don't need to call release after this.

Parameters
MediaController controller

The controller.

onExtrasChanged

default void onExtrasChanged(MediaController controller, Bundle extras)

Called when the session extras are set on the session side.

Parameters
MediaController controller

The controller.

Bundle extras

The session extras that have been set on the session.

onSessionActivityChanged

@UnstableApi
default void onSessionActivityChanged(
    MediaController controller,
    PendingIntent sessionActivity
)

Called when the PendingIntent to launch the session activity has been changed on the session side.

Parameters
MediaController controller

The controller.

PendingIntent sessionActivity

The pending intent to launch the session activity.

onSetCustomLayout

default ListenableFuture<SessionResultonSetCustomLayout(
    MediaController controller,
    List<CommandButton> layout
)

Called when the session sets the custom layout through setCustomLayout.

This method will be deprecated. Use onCustomLayoutChanged instead.

There is a slight difference in behaviour. This to be deprecated method may be consecutively called with an unchanged custom layout passed into it, in which case the new onCustomLayoutChanged isn't called again for equal arguments.

Further, when the available commands of a controller change in a way that affect whether buttons of the custom layout are enabled or disabled, the new callback onCustomLayoutChanged is called, in which case the deprecated callback isn't called.