MediaSession Extra для резервирования слота очереди автоматического воспроизведения Android не работает? (ALWAYS_RESERVE_SPACE_FOR.ACTION_QUEUE) - PullRequest
0 голосов
/ 08 мая 2018

Множество источников документации и примеров приложений объясняют, как предоставить конкретные дополнительные значения для MediaSession.setExtras(Bundle), чтобы зарезервировать места, используемые для стандартных кнопок действий мультимедиа Android Auto, даже если эти действия в настоящее время недоступны. Это предназначено для предотвращения повторного добавления пользовательских действий в свободные слоты на основной карте действия от дополнительной карты действия. Например, в разделе Настройка стандартных действий при воспроизведении в разделе «Обеспечение воспроизведения звука для авто» в документации указано:

Android Auto резервирует место в своем пользовательском интерфейсе для очереди воспроизведения и ACTION_SKIP_TO_PREVIOUS или ACTION_SKIP_TO_PREVIOUS действия. Если твой приложение не поддерживает ни одну из этих функций, интерфейс не будет отображаться контролирует их. Это назначит неиспользуемое пространство любому действия, которые вы создаете. Если вы не хотите заполнять эти поля пользовательские действия, вы можете "зарезервировать" их, чтобы 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";

Однако, по моему опыту, только два из трех дополнительных работают правильно. Дополнительные функции, чтобы зарезервировать слоты Next и Previous, работают так, как задокументировано, но мне никогда не удавалось заставить Extra резервирования очереди работать. Если очередь MediaSession равна нулю или пуста, Android Auto всегда скрывает кнопку «Очередь» и добавляет кнопку настраиваемого действия в первый слот, игнорируя резервирование слота «Дополнительно», если оно предусмотрено.

Проблема легко воспроизводится с небольшими изменениями примера приложения универсального медиаплеера Google ; просто установите пустую или пустую очередь, определите несколько пользовательских действий, и вы увидите, что флаг резервирования очереди игнорируется. Пример проекта UMP включает класс CarHelper , который помогает в настройке соответствующих дополнительных функций. Варианты этого можно найти в большинстве примеров приложений для Android Auto.

Известна ли проблема с резервированием очереди Extra? Кто-нибудь видел в очереди бронирование Extra work?

...