2

多个文档源和示例应用程序解释了如何为 提供特定的 Extra 值,MediaSession.setExtras(Bundle)以便保留用于标准 Android Auto 媒体操作按钮的空间,即使这些操作当前不可用。这是为了防止自定义操作从次要操作卡回流到主要操作卡上的空位。例如,为 Auto 文档提供音频播放的设置标准播放操作部分指出:

Android Auto 在其 UI 中为播放队列和 ACTION_SKIP_TO_PREVIOUS 或 ACTION_SKIP_TO_PREVIOUS 操作保留空间。如果您的应用程序不支持任何这些功能,则 UI 将不会显示它们的控件。它会将未使用的空间分配给您创建的任何自定义操作。如果您不想用自定义操作填充这些空间,您可以“保留”它们,以便 Android Auto 在启用操作时显示相应按钮,并在未启用操作或播放队列时将空间留空不存在

要保留空间,请使用包含下面定义的键的包调用 setExtras()。将每个键设置为布尔值 true:

// 使用这些附加功能来显示相应操作的传输控制按钮,即使它们在 PlaybackState 中未启用。

私有静态最终字符串 SLOT_RESERVATION_SKIP_TO_NEXT = "com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_NEXT";

私有静态最终字符串 SLOT_RESERVATION_SKIP_TO_PREV = "com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_PREVIOUS";

私有静态最终字符串 SLOT_RESERVATION_QUEUE = "com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_QUEUE";

但是,根据我的经验,三个 Extras 中只有两个可以正常工作。保留下一个和上一个插槽的附加功能按文档说明工作,但我从未能够让队列保留附加功能正常工作。如果 MediaSession 队列为 null 或为空,Android Auto 始终隐藏 Queue 按钮并将自定义操作按钮重排到第一个插槽中,如果提供了插槽预留 Extra,则忽略它。

只需对Google 的通用媒体播放器示例应用程序进行一些小改动,即可轻松重现该问题;只需设置一个 null 或空队列,定义几个自定义操作,您将看到队列保留标志被忽略。UMP 示例项目包括帮助设置适当 Extras的CarHelper 类。您可以在大多数 Android Auto 媒体应用示例中找到它的变体。

Queue reservation Extra 是否存在已知问题?有没有人看到队列预订额外的工作?

4

0 回答 0