public abstract class MediaBrowserService
extends Service
java.lang.Object | ||||
↳ | android.content.Context | |||
↳ | android.content.ContextWrapper | |||
↳ | android.app.Service | |||
↳ | android.service.media.MediaBrowserService |
媒体浏览服务的基类。
媒体浏览服务使应用程序能够浏览应用程序提供的媒体内容,并要求应用程序开始播放。 它们也可能用于控制已经通过MediaSession
播放的内容。
SERVICE_INTERFACE
action. For example:
<service android:name=".MyMediaBrowserService" android:label="@string/service_name" > <intent-filter> <action android:name="android.media.browse.MediaBrowserService" /> </intent-filter> </service>
Nested classes |
|
---|---|
class |
MediaBrowserService.BrowserRoot 包含浏览器服务首次连接时需要发送给客户端的信息。 |
class |
MediaBrowserService.Result<T> |
Constants |
|
---|---|
String |
SERVICE_INTERFACE 必须声明为由服务处理的 |
Inherited constants |
---|
From class android.app.Service
|
From class android.content.Context
|
From interface android.content.ComponentCallbacks2
|
Public constructors |
|
---|---|
MediaBrowserService() |
Public methods |
|
---|---|
void |
dump(FileDescriptor fd, PrintWriter writer, String[] args) 将服务的状态打印到给定的流中。 |
final Bundle |
getBrowserRootHints() 获取当前连接的 |
MediaSession.Token |
getSessionToken() 获取会话标记,如果尚未创建或已销毁它,则为null。 |
void |
notifyChildrenChanged(String parentId, Bundle options) 通知所有连接的媒体浏览器,指定的父ID的子项以某种方式发生了变化。 |
void |
notifyChildrenChanged(String parentId) 通知所有连接的媒体浏览器,指定的父ID的子项以某种方式发生了变化。 |
IBinder |
onBind(Intent intent) 将通信信道返回给服务。 |
void |
onCreate() 服务第一次创建时由系统调用。 |
abstract MediaBrowserService.BrowserRoot |
onGetRoot(String clientPackageName, int clientUid, Bundle rootHints) 调用以获取特定客户端浏览的根信息。 |
abstract void |
onLoadChildren(String parentId, Result<List<MediaBrowser.MediaItem>> result) 打电话来获取有关媒体项目的孩子的信息。 |
void |
onLoadChildren(String parentId, Result<List<MediaBrowser.MediaItem>> result, Bundle options) 打电话来获取有关媒体项目的孩子的信息。 |
void |
onLoadItem(String itemId, Result<MediaBrowser.MediaItem> result) 打电话获取有关特定媒体项目的信息。 |
void |
setSessionToken(MediaSession.Token token) 呼叫设置媒体会话。 |
Inherited methods |
|
---|---|
From class android.app.Service
|
|
From class android.content.ContextWrapper
|
|
From class android.content.Context
|
|
From class java.lang.Object
|
|
From interface android.content.ComponentCallbacks2
|
|
From interface android.content.ComponentCallbacks
|
String SERVICE_INTERFACE
Intent
必须声明为由服务处理。
常量值:“android.media.browse.MediaBrowserService”
void dump (FileDescriptor fd, PrintWriter writer, String[] args)
将服务的状态打印到给定的流中。 如果您运行“adb shell dumpsys activity service <yourservicename>”(注意,要使此命令生效,服务必须正在运行,并且您必须指定完全限定的服务名称),则会调用此命令。 这与“dumpsys <servicename>”不同,后者仅适用于命名系统服务,并在使用ServiceManager注册的IBinder
接口上调用dump(FileDescriptor, String[])
方法。
Parameters | |
---|---|
fd |
FileDescriptor : The raw file descriptor that the dump is being sent to. |
writer |
PrintWriter : The PrintWriter to which you should dump your state. This will be closed for you after you return. |
args |
String : additional arguments to the dump request. |
Bundle getBrowserRootHints ()
获取当前连接的MediaBrowser
发送的根提示。 根连接提示是在连接并检索用于浏览的根ID时发送到媒体浏览器服务的可选包中包含的特定于服务的参数,如果不包含,则返回null。 此包的内容可能会影响浏览时返回的信息。
Returns | |
---|---|
Bundle |
Throws | |
---|---|
IllegalStateException |
If this method is called outside of onLoadChildren(String, MediaBrowserService.Result
or onLoadItem(String, MediaBrowserService.Result
|
MediaSession.Token getSessionToken ()
获取会话标记,如果尚未创建或已销毁它,则为null。
Returns | |
---|---|
MediaSession.Token |
void notifyChildrenChanged (String parentId, Bundle options)
通知所有连接的媒体浏览器,指定的父ID的子项以某种方式发生了变化。 这将导致浏览器再次获取订阅的内容。
Parameters | |
---|---|
parentId |
String : The id of the parent media item whose children changed. |
options |
Bundle : A bundle of service-specific arguments to send to the media browse. The contents of this bundle may contain the information about the change. |
void notifyChildrenChanged (String parentId)
通知所有连接的媒体浏览器,指定的父ID的子项以某种方式发生了变化。 这将导致浏览器再次获取订阅的内容。
Parameters | |
---|---|
parentId |
String : The id of the parent media item whose children changed. |
IBinder onBind (Intent intent)
将通信信道返回给服务。 如果客户端无法绑定到服务,可能会返回null。 返回IBinder
通常是一个复杂的界面已经described using aidl 。
请注意,与其他应用程序组件不同,此处返回的IBinder接口调用可能不会发生在进程的主线程上 。 有关主线程的更多信息可以在Processes and Threads中找到。
Parameters | |
---|---|
intent |
Intent : The Intent that was used to bind to this service, as given to Context.bindService . Note that any extras that were included with the Intent at that point will not be seen here. |
Returns | |
---|---|
IBinder |
Return an IBinder through which clients can call on to the service. |
MediaBrowserService.BrowserRoot onGetRoot (String clientPackageName, int clientUid, Bundle rootHints)
调用以获取特定客户端浏览的根信息。
实施应验证客户端软件包是否有权访问浏览媒体信息,然后才能返回根ID; 如果客户端不被允许访问这些信息,它应该返回null。
Parameters | |
---|---|
clientPackageName |
String : The package name of the application which is requesting access to browse media. |
clientUid |
int : The uid of the application which is requesting access to browse media. |
rootHints |
Bundle : An optional bundle of service-specific arguments to send to the media browse service when connecting and retrieving the root id for browsing, or null if none. The contents of this bundle may affect the information returned when browsing. |
Returns | |
---|---|
MediaBrowserService.BrowserRoot |
The MediaBrowserService.BrowserRoot for accessing this app's content or null. |
void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result)
打电话来获取有关媒体项目的孩子的信息。
实现必须使用儿童列表调用result.sendResult
。 如果加载孩子将是一个昂贵的操作,应该在另一个线程上执行, result.detach
可以在从此函数返回之前调用result.sendResult
,然后在加载完成时调用result.sendResult
。
如果媒体项目没有任何子项,请使用空列表呼叫sendResult(T)
。 当给定的parentId
无效时,实现必须调用result.sendResult
和null
,这将调用onError(String)
。
Parameters | |
---|---|
parentId |
String : The id of the parent media item whose children are to be queried. |
result |
Result : The Result to send the list of children to. |
void onLoadChildren (String parentId, Result<List<MediaBrowser.MediaItem>> result, Bundle options)
打电话来获取有关媒体项目的孩子的信息。
实现必须使用子列表调用result.sendResult
。 如果加载孩子将是一个昂贵的操作,应该在另一个线程上执行, result.detach
可以在从此函数返回之前调用result.sendResult
,然后在加载完成时调用result.sendResult
。
如果媒体项目没有任何孩子,请拨打sendResult(T)
,并列出一个空白列表。 当给定的parentId
无效时,实现必须调用result.sendResult
和null
,这将调用onError(String)
。
Parameters | |
---|---|
parentId |
String : The id of the parent media item whose children are to be queried. |
result |
Result : The Result to send the list of children to. |
options |
Bundle : A bundle of service-specific arguments sent from the media browse. The information returned through the result should be affected by the contents of this bundle. |
void onLoadItem (String itemId, Result<MediaBrowser.MediaItem> result)
打电话获取有关特定媒体项目的信息。
实现必须调用result.sendResult
。 如果加载项目将是一个昂贵的操作, result.detach
可能会在从此函数返回之前调用result.sendResult
,然后在加载项目时调用result.sendResult
。
当给定的 itemId
无效时,实现必须调用 result.sendResult
和 null
,这将调用 onError(String)
。
默认实现调用 result.sendResult
和 null
。
Parameters | |
---|---|
itemId |
String : The id for the specific MediaBrowser.MediaItem . |
result |
Result : The Result to send the item to. |
void setSessionToken (MediaSession.Token token)
呼叫设置媒体会话。
这应该在服务启动期间尽快调用。 它只能被调用一次。
Parameters | |
---|---|
token |
MediaSession.Token : The token for the service's MediaSession . |