Most visited

Recently visited

Added in API level 21

MediaSession

public final class MediaSession
extends Object

java.lang.Object
   ↳ android.media.session.MediaSession


允许与媒体控制器,音量键,媒体按钮和传输控件进行交互。

当应用程序想要发布媒体播放信息或处理媒体密钥时,应创建MediaSession。 一般来说,一个应用程序只需要一个会话进行所有播放,但可创建多个会话来提供更精细的媒体控制。

一旦创建会话,会话的所有者可以将其 session token传递给其他进程,以允许他们创建 MediaController与会话进行交互。

接收命令,媒体键,和其它事件 MediaSession.Callback必须设置 setCallback(Callback)setActive(true)必须被调用。

当应用程序完成播放时,它必须调用 release()来清理会话并通知任何控制器。

MediaSession对象是线程安全的。

Summary

Nested classes

class MediaSession.Callback

从控制器和系统接收媒体按钮,传输控制和命令。

class MediaSession.QueueItem

作为播放队列一部分的单个项目。

class MediaSession.Token

代表正在进行的会议。

Constants

int FLAG_HANDLES_MEDIA_BUTTONS

在会话上设置此标志以指示它可以处理媒体按钮事件。

int FLAG_HANDLES_TRANSPORT_CONTROLS

在会话上设置此标志以指示它通过 MediaSession.Callback处理传输控制命令。

Public constructors

MediaSession(Context context, String tag)

创建一个新的会话。

Public methods

MediaController getController()

获取此会话的控制器。

MediaSession.Token getSessionToken()

检索可供应用程序使用的令牌对象,以创建用于与此会话进行交互的 MediaController

boolean isActive()

获取此会话的当前活动状态。

void release()

当应用程序完成播放时必须调用此选项。

void sendSessionEvent(String event, Bundle extras)

向所有监听本会话的MediaController发送专有事件。

void setActive(boolean active)

如果此会话当前处于活动状态并准备好接收命令,请设置。

void setCallback(MediaSession.Callback callback)

将回调设置为接收MediaSession的更新。

void setCallback(MediaSession.Callback callback, Handler handler)

将回调设置为接收MediaSession的更新。

void setExtras(Bundle extras)

设置一些可以与 MediaSession关联的 MediaSession

void setFlags(int flags)

为会话设置任何标志。

void setMediaButtonReceiver(PendingIntent mbr)

为媒体按钮接收器设置挂起的意图,以允许在会话停止后重新开始播放。

void setMetadata(MediaMetadata metadata)

更新当前的元数据。

void setPlaybackState(PlaybackState state)

更新当前播放状态。

void setPlaybackToLocal(AudioAttributes attributes)

设置此会话音频的属性。

void setPlaybackToRemote(VolumeProvider volumeProvider)

配置此会话以使用远程卷处理。

void setQueue(List<MediaSession.QueueItem> queue)

更新播放队列中的项目列表。

void setQueueTitle(CharSequence title)

设置播放队列的标题。

void setRatingType(int type)

设置此会话使用的评分风格。

void setSessionActivity(PendingIntent pi)

为此会话设置启动用户界面的意图。

Inherited methods

From class java.lang.Object

Constants

FLAG_HANDLES_MEDIA_BUTTONS

Added in API level 21
int FLAG_HANDLES_MEDIA_BUTTONS

在会话上设置此标志以指示它可以处理媒体按钮事件。

常数值:1(0x00000001)

FLAG_HANDLES_TRANSPORT_CONTROLS

Added in API level 21
int FLAG_HANDLES_TRANSPORT_CONTROLS

在会话上设置此标志以指示它通过 MediaSession.Callback处理传输控制命令。

常量值:2(0x00000002)

Public constructors

MediaSession

Added in API level 21
MediaSession (Context context, 
                String tag)

创建一个新的会话。 会话将自动注册到系统,但直到setActive(true)才会发布。 会议结束后,您必须致电release()

Parameters
context Context: The context to use to create the session.
tag String: A short name for debugging purposes.

Public methods

getController

Added in API level 21
MediaController getController ()

获取此会话的控制器。 这是避免在进程中缓存自己的控制器的一种便利方法。

Returns
MediaController A controller for this session.

getSessionToken

Added in API level 21
MediaSession.Token getSessionToken ()

检索可供应用程序使用的令牌对象,以创建用于与此会话进行交互的MediaController 会话的所有者负责决定如何分配这些令牌。

Returns
MediaSession.Token A token that can be used to create a MediaController for this session

isActive

Added in API level 21
boolean isActive ()

获取此会话的当前活动状态。

Returns
boolean True if the session is active, false otherwise.

release

Added in API level 21
void release ()

当应用程序完成播放时必须调用此选项。 如果播放预计很快会重新开始,则会话可以保持打开状态,但是如果您的活动或服务正在销毁,则必须释放该会话。

sendSessionEvent

Added in API level 21
void sendSessionEvent (String event, 
                Bundle extras)

向所有监听本会话的MediaController发送专有事件。 由控制器/会话所有者决定任何事件的含义。

Parameters
event String: The name of the event to send
extras Bundle: Any extras included with the event

setActive

Added in API level 21
void setActive (boolean active)

如果此会话当前处于活动状态并准备好接收命令,请设置。 如果设置为false,则会话的控制器可能无法被发现。 必须先将会话设置为活动状态,然后才能开始接收媒体按钮事件或传输命令。

Parameters
active boolean: Whether this session is active or not.

setCallback

Added in API level 21
void setCallback (MediaSession.Callback callback)

将回调设置为接收MediaSession的更新。 这包括媒体按钮事件和传输控制。 调用者的线程将用于发布更新。

将回调设置为null以停止接收更新。

Parameters
callback MediaSession.Callback: The callback object

setCallback

Added in API level 21
void setCallback (MediaSession.Callback callback, 
                Handler handler)

将回调设置为接收MediaSession的更新。 这包括媒体按钮事件和传输控制。

将回调设置为null以停止接收更新。

Parameters
callback MediaSession.Callback: The callback to receive updates on.
handler Handler: The handler that events should be posted on.

setExtras

Added in API level 21
void setExtras (Bundle extras)

设置一些可以与MediaSession关联的MediaSession 关于MediaController如何处理这些附加内容,不应该作出任何假设。 密钥应完全限定(例如com.example.MY_EXTRA)以避免冲突。

Parameters
extras Bundle: The extras associated with the MediaSession.

setFlags

Added in API level 21
void setFlags (int flags)

为会话设置任何标志。

Parameters
flags int: The flags to set for this session.

setMediaButtonReceiver

Added in API level 21
void setMediaButtonReceiver (PendingIntent mbr)

为媒体按钮接收器设置挂起的意图,以允许在会话停止后重新开始播放。 如果您的应用程序以这种方式启动,则ACTION_MEDIA_BUTTON意图将通过未决意图发送。

Parameters
mbr PendingIntent: The PendingIntent to send the media button event to.

setMetadata

Added in API level 21
void setMetadata (MediaMetadata metadata)

更新当前的元数据。 新的元数据可以使用MediaMetadata.Builder创建。

Parameters
metadata MediaMetadata: The new metadata

setPlaybackState

Added in API level 21
void setPlaybackState (PlaybackState state)

更新当前播放状态。

Parameters
state PlaybackState: The current state of playback

setPlaybackToLocal

Added in API level 21
void setPlaybackToLocal (AudioAttributes attributes)

设置此会话音频的属性。 这将影响此会话的系统卷处理。 如果先前调用setPlaybackToRemote(VolumeProvider) ,它将停止接收音量命令,系统将开始将音量更改发送到相应的流。

默认情况下会话使用媒体属性。

Parameters
attributes AudioAttributes: The AudioAttributes for this session's audio.

setPlaybackToRemote

Added in API level 21
void setPlaybackToRemote (VolumeProvider volumeProvider)

配置此会话以使用远程卷处理。 必须调用此选项才能接收音量按钮事件,否则系统将为此会话调整适当的流音量。 如果先前调用了setPlaybackToLocal(AudioAttributes) ,则系统将停止处理此会话的卷更改,并将其传递给卷提供程序。

Parameters
volumeProvider VolumeProvider: The provider that will handle volume changes. May not be null.

setQueue

Added in API level 21
void setQueue (List<MediaSession.QueueItem> queue)

更新播放队列中的项目列表。 它是一个有序列表,应包含当前项目以及前一个或即将到来的项目(如果存在)。 如果没有当前的播放队列,则指定null。

队列应该是合理的大小。 如果您的应用中的播放队列不受限制,最好在滑动窗口中发送合理的数量。

Parameters
queue List: A list of items in the play queue.

setQueueTitle

Added in API level 21
void setQueueTitle (CharSequence title)

设置播放队列的标题。 用户界面应该显示该标题以及播放队列本身。 例如“播放队列”,“正在播放”或专辑名称。

Parameters
title CharSequence: The title of the play queue.

setRatingType

Added in API level 22
void setRatingType (int type)

设置此会话使用的评分风格。 尝试设置评分的应用应使用此样式。 必须是以下之一:

Parameters
type int

setSessionActivity

Added in API level 21
void setSessionActivity (PendingIntent pi)

为此会话设置启动用户界面的意图。 这可以用作到正在进行的媒体屏幕的快速链接。 意图应该是针对可能使用startActivity(Intent)开始的活动。

Parameters
pi PendingIntent: The intent to launch to show UI for this Session.

Hooray!