多个文档源和示例应用程序解释了如何为MediaSession.setExtras(Bundle)
提供特定的额外值,以便保留用于标准Android自动媒体操作按钮的空间,即使这些操作当前不可用。这是为了防止自定义操作从辅助操作卡回流到主操作卡上的空闲插槽。例如,Setting Standard Playback Actions section of Providing Audio Playback for Auto文档说明:
Android Auto在其UI中为播放队列和 ACTION_SKIP_TO_PREVIOUS或ACTION_SKIP_TO_PREVIOUS操作。如果你的 应用程序不支持UI不会显示的任何这些功能 对他们的控制。它会将未使用的空间分配给任何自定义 你创造的行动。 如果您不想用这些空格填充 自定义操作,您可以"保留"他们让Android Auto会 启用操作时显示相应按钮,然后离开 未启用操作或播放队列时空格为空白 不存在。
要保留空间,请使用包含的包调用setExtras() 键定义如下。将每个键设置为布尔值true:
//使用这些额外内容显示的传输控制按钮 相应的操作,即使它们未在中启用 PlaybackState。
private static final String SLOT_RESERVATION_SKIP_TO_NEXT = " com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_NEXT&#34 ;;
private static final String SLOT_RESERVATION_SKIP_TO_PREV = " com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_PREVIOUS&#34 ;;
private static final String SLOT_RESERVATION_QUEUE = " com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_QUEUE&#34 ;;
但是,根据我的经验,三个Extras中只有两个正常运行。保留下一个和上一个插槽的附加功能按照记录的方式工作,但我从来没有能够使Queue预留Extra工作。如果MediaSession队列为空或空,则Android Auto始终隐藏队列按钮并将自定义操作按钮重排到第一个插槽中,如果提供,则忽略插槽预留额外。
通过Google's Universal Media Player sample app的一些小改动,这个问题很容易重现;只需设置一个空或空队列,定义几个自定义操作,您将看到队列保留标志被忽略。 UMP示例项目包含一个CarHelper class,可帮助您设置相应的Extras。您可以在大多数Android Auto媒体应用示例中找到它的变体形式。
Queue reservation Extra是否存在已知问题?有没有人看过队列预订额外的工作?