MediaControllerCompat

class MediaControllerCompat


Allows an app to interact with an ongoing media session. Media buttons and other commands can be sent to the session. A callback may be registered to receive updates from the session, such as metadata and play state changes.

A MediaController can be created if you have a MediaSessionCompat.Token from the session owner.

MediaController objects are thread-safe.

This is a helper for accessing features in android.media.session.MediaSession introduced after API level 4 in a backwards compatible fashion.

If MediaControllerCompat is created with a session token from another process, following methods will not work directly after the creation if the session token is not passed through a MediaBrowserCompat:

Summary

Nested types

Callback for receiving updates on from the session.

Holds information about the way volume is handled for this session.

Interface for controlling media playback on a session.

Public constructors

Creates a media controller from a session.

MediaControllerCompat(
    context: Context!,
    sessionToken: MediaSessionCompat.Token
)

Creates a media controller from a session token which may have been obtained from another process.

Public functions

Unit

Adds a queue item from the given description at the end of the play queue of this session.

Unit
addQueueItem(description: MediaDescriptionCompat!, index: Int)

Adds a queue item from the given description at the specified position in the play queue of this session.

Unit
adjustVolume(direction: Int, flags: Int)

Adjusts the volume of the output this session is playing on.

Boolean

Sends the specified media button event to the session.

Bundle!

Gets the extras for this session.

Long

Gets the flags for this session.

Any!

Gets the underlying framework android.media.session.MediaController object.

java-static MediaControllerCompat!

Retrieves the MediaControllerCompat set in the activity by setMediaController for sending media key and volume events.

MediaMetadataCompat!

Gets the current metadata for this session.

String!

Gets the session owner's package name.

MediaControllerCompat.PlaybackInfo!

Gets the current playback info for this session.

PlaybackStateCompat!

Gets the current playback state for this session.

(Mutable)List<MediaSessionCompat.QueueItem!>!

Gets the current play queue for this session if one is set.

CharSequence!

Gets the queue title for this session.

Int

Gets the rating type supported by the session.

Int

Gets the repeat mode for this session.

PendingIntent!

Gets an intent for launching UI associated with this session if one exists.

Bundle

Gets the additional session information which was set when the session was created.

MediaSessionCompat.Token!

Gets the token for the session that this controller is connected to.

Int

Gets the shuffle mode for this session.

MediaControllerCompat.TransportControls!

Gets a TransportControls instance for this session.

Boolean

Returns whether captioning is enabled for this session.

Boolean

Returns whether the session is ready or not.

Unit

Adds a callback to receive updates from the Session.

Unit
registerCallback(
    callback: MediaControllerCompat.Callback,
    handler: Handler!
)

Adds a callback to receive updates from the session.

Unit

Removes the first occurrence of the specified MediaSessionCompat.QueueItem with the given description in the play queue of the associated session.

Unit

This function is deprecated.

Use removeQueueItem instead.

Unit
sendCommand(command: String, params: Bundle?, cb: ResultReceiver?)

Sends a generic command to the session.

java-static Unit
setMediaController(
    activity: Activity,
    mediaController: MediaControllerCompat!
)

Sets a MediaControllerCompat in the activity for later retrieval via getMediaController.

Unit
setVolumeTo(value: Int, flags: Int)

Sets the volume of the output this session is playing on.

Unit

Stops receiving updates on the specified callback.

Public constructors

MediaControllerCompat

Added in 1.1.0
MediaControllerCompat(context: Context!, session: MediaSessionCompat)

Creates a media controller from a session.

Parameters
session: MediaSessionCompat

The session to be controlled.

MediaControllerCompat

Added in 1.1.0
MediaControllerCompat(
    context: Context!,
    sessionToken: MediaSessionCompat.Token
)

Creates a media controller from a session token which may have been obtained from another process.

Parameters
sessionToken: MediaSessionCompat.Token

The token of the session to be controlled.

Public functions

addQueueItem

Added in 1.1.0
fun addQueueItem(description: MediaDescriptionCompat!): Unit

Adds a queue item from the given description at the end of the play queue of this session. Not all sessions may support this. To know whether the session supports this, get the session's flags with getFlags and check that the flag FLAG_HANDLES_QUEUE_COMMANDS is set.

Parameters
description: MediaDescriptionCompat!

The MediaDescriptionCompat for creating the MediaSessionCompat.QueueItem to be inserted.

Throws
java.lang.UnsupportedOperationException

If this session doesn't support this.

addQueueItem

Added in 1.1.0
fun addQueueItem(description: MediaDescriptionCompat!, index: Int): Unit

Adds a queue item from the given description at the specified position in the play queue of this session. Shifts the queue item currently at that position (if any) and any subsequent queue items to the right (adds one to their indices). Not all sessions may support this. To know whether the session supports this, get the session's flags with getFlags and check that the flag FLAG_HANDLES_QUEUE_COMMANDS is set.

Parameters
description: MediaDescriptionCompat!

The MediaDescriptionCompat for creating the MediaSessionCompat.QueueItem to be inserted.

index: Int

The index at which the created MediaSessionCompat.QueueItem is to be inserted.

Throws
java.lang.UnsupportedOperationException

If this session doesn't support this.

adjustVolume

Added in 1.1.0
fun adjustVolume(direction: Int, flags: Int): Unit

Adjusts the volume of the output this session is playing on. The direction must be one of ADJUST_LOWER, ADJUST_RAISE, or ADJUST_SAME. The command will be ignored if the session does not support VOLUME_CONTROL_RELATIVE or VOLUME_CONTROL_ABSOLUTE. The flags in AudioManager may be used to affect the handling.

Parameters
direction: Int

The direction to adjust the volume in.

flags: Int

Any flags to pass with the command.

See also
getPlaybackInfo

dispatchMediaButtonEvent

Added in 1.1.0
fun dispatchMediaButtonEvent(keyEvent: KeyEvent!): Boolean

Sends the specified media button event to the session. Only media keys can be sent by this method, other keys will be ignored.

Parameters
keyEvent: KeyEvent!

The media button event to dispatch.

Returns
Boolean

true if the event was sent to the session, false otherwise.

getExtras

Added in 1.1.0
fun getExtras(): Bundle!

Gets the extras for this session.

getFlags

Added in 1.1.0
fun getFlags(): Long

Gets the flags for this session. Flags are defined in MediaSessionCompat.

Returns
Long

The current set of flags for the session.

getMediaController

Added in 1.1.0
fun getMediaController(): Any!

Gets the underlying framework android.media.session.MediaController object.

This method is only supported on API 21+.

Returns
Any!

The underlying android.media.session.MediaController object, or null if none.

getMediaController

Added in 1.1.0
java-static fun getMediaController(activity: Activity): MediaControllerCompat!

Retrieves the MediaControllerCompat set in the activity by setMediaController for sending media key and volume events.

This is compatible with getMediaController.

Parameters
activity: Activity

The activity to get the media controller from, must not be null.

Returns
MediaControllerCompat!

The controller which should receive events.

getMetadata

Added in 1.1.0
fun getMetadata(): MediaMetadataCompat!

Gets the current metadata for this session.

Returns
MediaMetadataCompat!

The current MediaMetadata or null.

getPackageName

Added in 1.1.0
fun getPackageName(): String!

Gets the session owner's package name.

Returns
String!

The package name of of the session owner.

getPlaybackInfo

Added in 1.1.0
fun getPlaybackInfo(): MediaControllerCompat.PlaybackInfo!

Gets the current playback info for this session.

Returns
MediaControllerCompat.PlaybackInfo!

The current playback info or null.

getPlaybackState

Added in 1.1.0
fun getPlaybackState(): PlaybackStateCompat!

Gets the current playback state for this session.

If the session is not ready, getExtras on the result of this method may return null.

Returns
PlaybackStateCompat!

The current PlaybackState or null

getQueue

Added in 1.1.0
fun getQueue(): (Mutable)List<MediaSessionCompat.QueueItem!>!

Gets the current play queue for this session if one is set. If you only care about the current item getMetadata should be used.

Returns
(Mutable)List<MediaSessionCompat.QueueItem!>!

The current play queue or null.

getQueueTitle

Added in 1.1.0
fun getQueueTitle(): CharSequence!

Gets the queue title for this session.

getRatingType

Added in 1.1.0
fun getRatingType(): Int

Gets the rating type supported by the session. One of:

If the session is not ready, it will return RATING_NONE.

Returns
Int

The supported rating type, or RATING_NONE if the value is not set or the session is not ready.

getRepeatMode

Added in 1.1.0
fun getRepeatMode(): Int

Gets the repeat mode for this session.

Returns
Int

The latest repeat mode set to the session, REPEAT_MODE_NONE if not set, or REPEAT_MODE_INVALID if the session is not ready yet.

getSessionActivity

Added in 1.1.0
fun getSessionActivity(): PendingIntent!

Gets an intent for launching UI associated with this session if one exists.

Returns
PendingIntent!

A PendingIntent to launch UI or null.

getSessionInfo

Added in 1.2.0
fun getSessionInfo(): Bundle

Gets the additional session information which was set when the session was created. The returned Bundle can include additional unchanging information about the session. For example, it can include the version of the session application, or other app-specific unchanging information.

Returns
Bundle

The additional session information, or EMPTY if the session didn't set the information or if the session is not ready.

getSessionToken

Added in 1.1.0
fun getSessionToken(): MediaSessionCompat.Token!

Gets the token for the session that this controller is connected to.

Returns
MediaSessionCompat.Token!

The session's token.

getShuffleMode

Added in 1.1.0
fun getShuffleMode(): Int

Gets the shuffle mode for this session.

Returns
Int

The latest shuffle mode set to the session, or SHUFFLE_MODE_NONE if disabled or not set, or SHUFFLE_MODE_INVALID if the session is not ready yet.

getTransportControls

Added in 1.1.0
fun getTransportControls(): MediaControllerCompat.TransportControls!

Gets a TransportControls instance for this session.

Returns
MediaControllerCompat.TransportControls!

A controls instance

isCaptioningEnabled

Added in 1.1.0
fun isCaptioningEnabled(): Boolean

Returns whether captioning is enabled for this session.

If the session is not ready, it will return a false.

Returns
Boolean

true if captioning is enabled, false if disabled or not set.

isSessionReady

Added in 1.1.0
fun isSessionReady(): Boolean

Returns whether the session is ready or not.

If the session is not ready, following methods can work incorrectly.

Returns
Boolean

true if the session is ready, false otherwise.

See also
onSessionReady

registerCallback

Added in 1.1.0
fun registerCallback(callback: MediaControllerCompat.Callback): Unit

Adds a callback to receive updates from the Session. Updates will be posted on the caller's thread.

Parameters
callback: MediaControllerCompat.Callback

The callback object, must not be null.

registerCallback

Added in 1.1.0
fun registerCallback(
    callback: MediaControllerCompat.Callback,
    handler: Handler!
): Unit

Adds a callback to receive updates from the session. Updates will be posted on the specified handler's thread.

Parameters
callback: MediaControllerCompat.Callback

The callback object, must not be null.

handler: Handler!

The handler to post updates on. If null the callers thread will be used.

removeQueueItem

Added in 1.1.0
fun removeQueueItem(description: MediaDescriptionCompat!): Unit

Removes the first occurrence of the specified MediaSessionCompat.QueueItem with the given description in the play queue of the associated session. Not all sessions may support this. To know whether the session supports this, get the session's flags with getFlags and check that the flag FLAG_HANDLES_QUEUE_COMMANDS is set.

Parameters
description: MediaDescriptionCompat!

The MediaDescriptionCompat for denoting the MediaSessionCompat.QueueItem to be removed.

Throws
java.lang.UnsupportedOperationException

If this session doesn't support this.

removeQueueItemAt

Added in 1.1.0
Deprecated in 1.1.0
fun removeQueueItemAt(index: Int): Unit

Removes an queue item at the specified position in the play queue of this session. Not all sessions may support this. To know whether the session supports this, get the session's flags with getFlags and check that the flag FLAG_HANDLES_QUEUE_COMMANDS is set.

Parameters
index: Int

The index of the element to be removed.

Throws
java.lang.UnsupportedOperationException

If this session doesn't support this.

sendCommand

Added in 1.1.0
fun sendCommand(command: String, params: Bundle?, cb: ResultReceiver?): Unit

Sends a generic command to the session. It is up to the session creator to decide what commands and parameters they will support. As such, commands should only be sent to sessions that the controller owns.

Parameters
command: String

The command to send

params: Bundle?

Any parameters to include with the command. Can be null.

cb: ResultReceiver?

The callback to receive the result on. Can be null.

setMediaController

Added in 1.1.0
java-static fun setMediaController(
    activity: Activity,
    mediaController: MediaControllerCompat!
): Unit

Sets a MediaControllerCompat in the activity for later retrieval via getMediaController.

On API 21 and later, setMediaController will also be called.

Parameters
activity: Activity

The activity to set the mediaController in, must not be null.

mediaController: MediaControllerCompat!

The controller for the session which should receive media keys and volume changes on API 21 and later.

setVolumeTo

Added in 1.1.0
fun setVolumeTo(value: Int, flags: Int): Unit

Sets the volume of the output this session is playing on. The command will be ignored if it does not support VOLUME_CONTROL_ABSOLUTE. The flags in AudioManager may be used to affect the handling.

Parameters
value: Int

The value to set it to, between 0 and the reported max.

flags: Int

Flags from AudioManager to include with the volume request.

See also
getPlaybackInfo

unregisterCallback

Added in 1.1.0
fun unregisterCallback(callback: MediaControllerCompat.Callback): Unit

Stops receiving updates on the specified callback. If an update has already been posted you may still receive it after calling this method.

Parameters
callback: MediaControllerCompat.Callback

The callback to remove