Android MediaController命令的一些示例是什么?

Android MediaController命令的一些示例是什么?,android,mediacontroller,android-mediasession,notification-listener,Android,Mediacontroller,Android Mediasession,Notification Listener,查看文档时,我注意到有一个名为的函数,它需要三个参数: 命令:字符串 args:束 cb:ResultReceiver 但如何使用这种方法的例子却无处可寻 可用的MediaController\sendCommand(…)默认命令和可接受的参数键和值类型是什么? 例如,检查文档,我们可以找到一个名为的常量,其描述如下: 指示此会话支持从媒体id播放命令 这让我们想到,MediaController\sendCommand(…)可以通过发送媒体ID来更改MediaSession的当前媒体。

查看文档时,我注意到有一个名为的函数,它需要三个参数:

  • 命令:字符串
  • args:束
  • cb:ResultReceiver
但如何使用这种方法的例子却无处可寻


可用的
MediaController\sendCommand(…)
默认命令和可接受的参数键和值类型是什么?


例如,检查文档,我们可以找到一个名为的常量,其描述如下:

指示此会话支持从媒体id播放命令

这让我们想到,
MediaController\sendCommand(…)
可以通过发送媒体ID来更改
MediaSession
的当前媒体。我们如何做?

众所周知,Google Play Music应用程序的MediaController通过函数共享其媒体队列。

您可以在MediaController Compat中找到命令常量

它们实际上是:

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);
    }

您列出的常量似乎用
@hide
注释标记为隐藏:是的,它们是。如果需要,请查看MediaSessionConnector.QueueEditor。您可以看到,如果使用命令\U REMOVE\U QUEUE\U ITEM,将调用QueueEditor.onRemoveQueueItem。如果您使用自己的命令,那么将调用QueueEditor.onCommand。这些只是一些内置的例子。如果你想使用onCommand,你需要使用你自己的命令,而不是那些。