public final class

MediaSession.Builder

extends androidx.media3.session.MediaSession.BuilderBase<MediaSession, MediaSession.Builder, MediaSession.Callback>

 java.lang.Object

↳androidx.media3.session.MediaSession.BuilderBase<MediaSession, MediaSession.Builder, MediaSession.Callback>

↳androidx.media3.session.MediaSession.Builder

Overview

A builder for MediaSession.

Any incoming requests from the MediaController will be handled on the application thread of the underlying Player.

Summary

Constructors
publicBuilder(Context context, Player player)

Creates a builder for MediaSession.

Methods
public MediaSessionbuild()

Builds a MediaSession.

public MediaSession.BuildersetBitmapLoader(BitmapLoader bitmapLoader)

Sets a BitmapLoader for the MediaSession to decode bitmaps from compressed binary data or load bitmaps from .

public MediaSession.BuildersetCallback(MediaSession.Callback callback)

Sets a callback for the MediaSession to handle incoming requests from {link MediaController}.

public MediaSession.BuildersetCustomLayout(java.util.List<CommandButton> customLayout)

Sets the custom layout of the session.

public MediaSession.BuildersetExtras(Bundle tokenExtras)

Sets an extras for the session token.

public MediaSession.BuildersetId(java.lang.String id)

Sets an ID of the MediaSession.

public MediaSession.BuildersetPeriodicPositionUpdateEnabled(boolean isEnabled)

Sets whether periodic position updates should be sent to controllers while playing.

public MediaSession.BuildersetSessionActivity(PendingIntent pendingIntent)

Sets a PendingIntent to launch an for the MediaSession.

public MediaSession.BuildersetSessionExtras(Bundle sessionExtras)

Sets the session extras.

public MediaSession.BuildersetShowPlayButtonIfPlaybackIsSuppressed(boolean showPlayButtonIfPlaybackIsSuppressed)

Sets whether a play button is shown if playback is suppressed.

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public Builder(Context context, Player player)

Creates a builder for MediaSession.

Parameters:

context: The context.
player: The underlying player to perform playback and handle player commands.

Methods

public MediaSession.Builder setSessionActivity(PendingIntent pendingIntent)

Sets a PendingIntent to launch an for the MediaSession. This can be used as a quick link to an ongoing media screen.

A client can use this pending intent to start an activity belonging to this session. On API levels below 33 the pending intent can be used . Tapping the notification will then send that pending intent and open the activity (see 'Start an Activity from a Notification'). For API levels starting with 33, the media notification reads the pending intent directly from the session.

Parameters:

pendingIntent: The pending intent.

Returns:

The builder to allow chaining.

public MediaSession.Builder setId(java.lang.String id)

Sets an ID of the MediaSession. If not set, an empty string will be used.

Use this if and only if your app supports multiple playback at the same time and also wants to provide external apps to have finer-grained controls.

Parameters:

id: The ID. Must be unique among all sessions per package.

Returns:

The builder to allow chaining.

public MediaSession.Builder setCallback(MediaSession.Callback callback)

Sets a callback for the MediaSession to handle incoming requests from {link MediaController}.

Apps that want to allow controllers to set or add media items to the playlist, must use a callback and override its MediaSession.Callback or MediaSession.Callback methods.

Parameters:

callback: The callback.

Returns:

The builder to allow chaining.

public MediaSession.Builder setExtras(Bundle tokenExtras)

Sets an extras for the session token. If not set, is used.

A controller has access to these extras through the connected token.

Parameters:

tokenExtras: The extras .

Returns:

The builder to allow chaining.

public MediaSession.Builder setSessionExtras(Bundle sessionExtras)

Sets the session extras. If not set, is used.

A controller has access to session extras through MediaController.getSessionExtras().

Parameters:

sessionExtras: The session extras .

Returns:

The builder to allow chaining.

public MediaSession.Builder setBitmapLoader(BitmapLoader bitmapLoader)

Sets a BitmapLoader for the MediaSession to decode bitmaps from compressed binary data or load bitmaps from .

The provided instance will likely be called repeatedly with the same request, so it would be best if any provided instance does some caching. Simple caching can be added to any BitmapLoader implementation by wrapping it in CacheBitmapLoader before passing it to this method.

If no instance is set, a CacheBitmapLoader with a DataSourceBitmapLoader inside will be used.

Parameters:

bitmapLoader: The bitmap loader BitmapLoader.

Returns:

The builder to allow chaining.

public MediaSession.Builder setCustomLayout(java.util.List<CommandButton> customLayout)

Sets the custom layout of the session.

The button are converted to custom actions in the legacy media session playback state for legacy controllers (see PlaybackStateCompat.Builder#addCustomAction(PlaybackStateCompat.CustomAction)). When converting, the custom extras of the session command is used for the extras of the legacy custom action.

Controllers that connect have the custom layout of the session available with the initial connection result by default. A custom layout specific to a controller can be set when the controller connects by using an MediaSession.ConnectionResult.AcceptedResultBuilder.

Use MediaSession.setCustomLayout(..) to update the custom layout during the life time of the session.

On the controller side, the enabled flag is set to false if the available commands of a controller do not allow to use a button.

Parameters:

customLayout: The ordered list of command buttons.

Returns:

The builder to allow chaining.

public MediaSession.Builder setPeriodicPositionUpdateEnabled(boolean isEnabled)

Sets whether periodic position updates should be sent to controllers while playing. If false, no periodic position updates are sent to controllers.

The default is true.

Parameters:

isEnabled: Whether periodic position update is enabled.

public MediaSession.Builder setShowPlayButtonIfPlaybackIsSuppressed(boolean showPlayButtonIfPlaybackIsSuppressed)

Sets whether a play button is shown if playback is suppressed.

The default is true.

Parameters:

showPlayButtonIfPlaybackIsSuppressed: Whether to show a play button if playback is suppressed.

public MediaSession build()

Builds a MediaSession.

Returns:

A new session.