在查看MediaController文档时,我注意到有一个名为sendCommand(...)的函数,它需要三个参数:
但是如何使用该方法的示例却找不到找不到。
有哪些可用的MediaController#sendCommand(...)
默认命令以及可接受的参数键和值类型?
例如,查看PlaybackState文档,我们可以找到一个名为ACTION_PLAY_FROM_MEDIA_ID
的常量,其描述如下:
表明此会话支持通过媒体ID播放命令
这使我们认为MediaController#sendCommand(...)
可以通过向其发送媒体ID来更改MediaSession
的当前媒体。怎么办呢?
众所周知,Google Play音乐应用的MediaController通过MediaController#getQueue
函数共享其媒体队列。
答案 0 :(得分:0)
您可以在MediaControllerCompat中找到Commands常量。
它们实际上是:
public static final String COMMAND_GET_EXTRA_BINDER =
"android.support.v4.media.session.command.GET_EXTRA_BINDER";
public static final String COMMAND_ADD_QUEUE_ITEM =
"android.support.v4.media.session.command.ADD_QUEUE_ITEM";
public static final String COMMAND_ADD_QUEUE_ITEM_AT =
"android.support.v4.media.session.command.ADD_QUEUE_ITEM_AT";
public static final String COMMAND_REMOVE_QUEUE_ITEM =
"android.support.v4.media.session.command.REMOVE_QUEUE_ITEM";
public static final String COMMAND_REMOVE_QUEUE_ITEM_AT =
"android.support.v4.media.session.command.REMOVE_QUEUE_ITEM_AT";
public static final String COMMAND_ARGUMENT_MEDIA_DESCRIPTION =
"android.support.v4.media.session.command.ARGUMENT_MEDIA_DESCRIPTION";
public static final String COMMAND_ARGUMENT_INDEX =
"android.support.v4.media.session.command.ARGUMENT_INDEX";
对于一些基本用法示例,您可以查看其方法,例如:
@Override
public void removeQueueItem(MediaDescriptionCompat description) {
long flags = getFlags();
if ((flags & MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS) == 0) {
throw new UnsupportedOperationException(
"This session doesn't support queue management operations");
}
Bundle params = new Bundle();
params.putParcelable(COMMAND_ARGUMENT_MEDIA_DESCRIPTION, description);
sendCommand(COMMAND_REMOVE_QUEUE_ITEM, params, null);
}