Building a media browser service(构建媒体浏览器服务)
GitHub 链接
译:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice
你的应用必须在其 manifest 中声明 MediaBrowserService
并使用 intent-filter。你可以选择自己的 service name。在下面的实例中,它是 “MediaPlaybackService” 。
<service android:name=".MediaPlaybackService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
Note:
MediaBrowserService
的推荐实现是MediaBrowserServiceCompat
。这是在 media-compat 支持库中定义的。在本文中,术语 “MediaBrowserService” 指的是MediaBrowserServiceCompat
的实例。
Initialize the media session
当服务收到 onCreate()
生命周期回调方法时,它应该执行以下步骤:
- 创建和 初始化 media session
- 设置
media session
的 callback - 设置
media session token
下面的 onCreate()
代码演示了以下步骤:
public class MediaPlaybackService extends MediaBrowserServiceCompat {
private static final String MY_MEDIA_ROOT_ID = "media_root_id";
private static final String MY_EMPTY_MEDIA_ROOT_ID = "empty_root_id";
private MediaSessionCompat mMediaSession;
private PlaybackStateCompat.Builder mStateBuilder;
@Override
public void onCreate() {
super.onCreate();
// Create a MediaSessionCompat
mMediaSession = new MediaSessionCompat(context, LOG_TAG);
// Enable callbacks from MediaButtons and TransportControls
mMediaSession.setFlags(
MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
// Set an initial PlaybackState with ACTION_PLAY, so media buttons can start the player
mStateBuilder = new PlaybackStateCompat.Builder()
.setActions(
PlaybackStateCompat.ACTION_PLAY |
PlaybackStateCompat.ACTION_PLAY_PAUSE);
mMediaSession.setPlaybackState