Most visited

Recently visited

MediaSessionCompat

public class MediaSessionCompat
extends Object

java.lang.Object
   ↳ android.support.v4.media.session.MediaSessionCompat


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

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

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

要接收命令,媒体密钥和其他事件, MediaSessionCompat.Callback必须使用 setCallback(Callback)进行设置。

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

MediaSessionCompat对象不是线程安全的,所有调用都应该使用同一个线程。

这是帮助您以向后兼容的方式访问API级别4之后引入的 MediaSession功能。

Summary

Nested classes

class MediaSessionCompat.Callback

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

interface MediaSessionCompat.OnActiveChangeListener

 

class MediaSessionCompat.QueueItem

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

class MediaSessionCompat.Token

代表正在进行的会议。

Constants

int FLAG_HANDLES_MEDIA_BUTTONS

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

int FLAG_HANDLES_TRANSPORT_CONTROLS

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

Public constructors

MediaSessionCompat(Context context, String tag)

创建一个新的会话。

MediaSessionCompat(Context context, String tag, ComponentName mbrComponent, PendingIntent mbrIntent)

使用指定媒体按钮接收器(组件名称和/或未决意图)创建新会话。

Public methods

void addOnActiveChangeListener(MediaSessionCompat.OnActiveChangeListener listener)

添加一个侦听器,以便在此会话的活动状态更改时进行通知。

MediaControllerCompat getController()

获取此会话的控制器。

Object getMediaSession()

获取底层框架 MediaSession对象。

Object getRemoteControlClient()

获取底层框架 RemoteControlClient对象。

MediaSessionCompat.Token getSessionToken()

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

boolean isActive()

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

static MediaSessionCompat obtain(Context context, Object mediaSession)

获取现有MediaSession的compat包装器。

void release()

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

void removeOnActiveChangeListener(MediaSessionCompat.OnActiveChangeListener listener)

当该会话的活动状态改变时,停止监听器被通知。

void sendSessionEvent(String event, Bundle extras)

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

void setActive(boolean active)

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

void setCallback(MediaSessionCompat.Callback callback, Handler handler)

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

void setCallback(MediaSessionCompat.Callback callback)

添加一个回调以接收MediaSession的更新。

void setExtras(Bundle extras)

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

void setFlags(int flags)

为会话设置任何标志。

void setMediaButtonReceiver(PendingIntent mbr)

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

void setMetadata(MediaMetadataCompat metadata)

更新当前的元数据。

void setPlaybackState(PlaybackStateCompat state)

更新当前播放状态。

void setPlaybackToLocal(int stream)

设置此会话正在播放的流。

void setPlaybackToRemote(VolumeProviderCompat volumeProvider)

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

void setQueue(List<MediaSessionCompat.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

int FLAG_HANDLES_MEDIA_BUTTONS

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

常数值:1(0x00000001)

FLAG_HANDLES_TRANSPORT_CONTROLS

int FLAG_HANDLES_TRANSPORT_CONTROLS

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

常量值:2(0x00000002)

Public constructors

MediaSessionCompat

MediaSessionCompat (Context context, 
                String tag)

创建一个新的会话。 会议结束后,您必须致电release()

会话将自动注册到系统,但直到 setActive(true)才会发布。

对于API 20或更早版本,请注意,处理ACTION_MEDIA_BUTTON需要媒体按钮接收器。 这个构造函数将尝试从你的清单中找到合适的BroadcastReceiver 详情请参阅MediaButtonReceiver

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

MediaSessionCompat

MediaSessionCompat (Context context, 
                String tag, 
                ComponentName mbrComponent, 
                PendingIntent mbrIntent)

使用指定媒体按钮接收器(组件名称和/或未决意图)创建新会话。 会议结束后,您必须致电release()

会话将自动在系统中注册,但直到setActive(true)才会发布。 请注意, mbrComponentmrbIntent仅用于API 20或更早版本。 如果您想在API 21或更高版本中设置媒体按钮接收器,请致电setMediaButtonReceiver(PendingIntent)

对于API 20或更早版本,新会话将使用给定的mbrComponent 如果为空,这将试图找到一个适当的BroadcastReceiver来处理清单中的ACTION_MEDIA_BUTTON 详情请参阅MediaButtonReceiver

Parameters
context Context: The context to use to create the session.
tag String: A short name for debugging purposes.
mbrComponent ComponentName: The component name for your media button receiver.
mbrIntent PendingIntent: The PendingIntent for your receiver component that handles media button events. This is optional and will be used on between JELLY_BEAN_MR2 and KITKAT_WATCH instead of the component name.

Public methods

addOnActiveChangeListener

void addOnActiveChangeListener (MediaSessionCompat.OnActiveChangeListener listener)

添加一个侦听器,以便在此会话的活动状态更改时进行通知。 这主要由支持库使用,不应该由应用程序需要。

Parameters
listener MediaSessionCompat.OnActiveChangeListener: The listener to add.

getController

MediaControllerCompat getController ()

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

Returns
MediaControllerCompat A controller for this session.

getMediaSession

Object getMediaSession ()

获取底层框架 MediaSession对象。

此方法仅在API 21+上受支持。

Returns
Object The underlying MediaSession object, or null if none.

getRemoteControlClient

Object getRemoteControlClient ()

获取底层框架 RemoteControlClient对象。

此方法仅在API 14-20上受支持。 应使用API 21+ getMediaSession()

Returns
Object The underlying RemoteControlClient object, or null if none.

getSessionToken

MediaSessionCompat.Token getSessionToken ()

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

LOLLIPOP之前的平台版本上,此标记只能在您的应用程序中使用,因为无法保证其他应用程序正在使用相同版本的支持库。

Returns
MediaSessionCompat.Token A token that can be used to create a media controller for this session.

isActive

boolean isActive ()

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

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

obtain

MediaSessionCompat obtain (Context context, 
                Object mediaSession)

获取现有MediaSession的compat包装器。

Parameters
context Context
mediaSession Object: The MediaSession to wrap.
Returns
MediaSessionCompat A compat wrapper for the provided session.

release

void release ()

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

removeOnActiveChangeListener

void removeOnActiveChangeListener (MediaSessionCompat.OnActiveChangeListener listener)

当该会话的活动状态改变时,停止监听器被通知。

Parameters
listener MediaSessionCompat.OnActiveChangeListener: The listener to remove.

sendSessionEvent

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

void setActive (boolean active)

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

在早于 LOLLIPOP平台上,应通过构造函数设置媒体按钮事件接收器以接收媒体按钮事件。

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

setCallback

void setCallback (MediaSessionCompat.Callback callback, 
                Handler handler)

将回调设置为接收MediaSession的更新。 这包括媒体按钮和音量事件。 将回调设置为null以停止接收事件。

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

setCallback

void setCallback (MediaSessionCompat.Callback callback)

添加一个回调以接收MediaSession的更新。 这包括媒体按钮和音量事件。 调用者的线程将用于发布事件。

Parameters
callback MediaSessionCompat.Callback: The callback object

setExtras

void setExtras (Bundle extras)

设置一些可以与MediaSessionCompat关联的MediaSessionCompat 关于MediaControllerCompat如何处理这些额外信息,不应该做出任何假设。 密钥应完全限定(例如com.example.MY_EXTRA)以避免冲突。

Parameters
extras Bundle: The extras associated with the session.

setFlags

void setFlags (int flags)

为会话设置任何标志。

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

setMediaButtonReceiver

void setMediaButtonReceiver (PendingIntent mbr)

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

此方法仅适用于LOLLIPOP及更高版本。 早期的平台版本必须在构造函数中包含媒体按钮接收器。

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

setMetadata

void setMetadata (MediaMetadataCompat metadata)

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

Parameters
metadata MediaMetadataCompat: The new metadata

setPlaybackState

void setPlaybackState (PlaybackStateCompat state)

更新当前播放状态。

Parameters
state PlaybackStateCompat: The current state of playback

setPlaybackToLocal

void setPlaybackToLocal (int stream)

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

默认情况下会话是 STREAM_MUSIC

Parameters
stream int: The AudioManager stream this session is playing on.

setPlaybackToRemote

void setPlaybackToRemote (VolumeProviderCompat volumeProvider)

配置此会话以使用远程卷处理。 必须调用此选项才能接收音量按钮事件,否则系统将调整此会话的当前流音量。 如果先前调用了setPlaybackToLocal(int)则该流将停止接收此会话的音量更改。

在早于LOLLIPOP平台上,这将只允许应用程序处理由MediaControllerCompat直接发送到会话的卷命令。 音量键的系统路由不会使用音量提供程序。

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

setQueue

void setQueue (List<MediaSessionCompat.QueueItem> queue)

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

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

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

setQueueTitle

void setQueueTitle (CharSequence title)

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

Parameters
title CharSequence: The title of the play queue.

setRatingType

void setRatingType (int type)

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

Parameters
type int

setSessionActivity

void setSessionActivity (PendingIntent pi)

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

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

Hooray!