Настройка кнопки очереди Android Auto MediaSession. Можно ли изменить внешний вид или поведение?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Настройка кнопки очереди Android Auto MediaSession. Можно ли изменить внешний вид или поведение?

Сообщение Anonymous »

Я работаю над приложением для потоковой передачи музыки для Android с интеграцией Android Auto. После обширного исследования нашей кодовой базы и документации Android мне нужно подтвердить, можно ли настроить кнопку очереди на экране воспроизведения Android Auto.
Текущая реализация
Наше приложение использует MediaBrowserServiceCompat с MediaSessionCompat для интеграции Android Auto:

Код: Выделить всё

// From MediaSessionController.java
public class MediaSessionController {
private final MediaSessionCompat mediaSession;

public MediaSessionController(final Context context, final PlaybackController playbackController) {
mediaSession = new MediaSessionCompat(context, logger.getName());
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mediaSession.setCallback(new MediaSessionCallback());
// ...  other setup
}
}
Реализация очереди
Мы заполняем очередь, используя стандартный подход MediaSession:

Код: Выделить всё

private void updateMediaSessionQueue(boolean forceUpdate) {
final PlaybackConfig playbackConfig = playbackController.getPlayback().getPlaybackConfig();
final int previewCount = playbackConfig.getPreviewCount();

// Deactivate queue if preview count is 0 or playback is not on demand
if (previewCount 
playbackHandler.handleMediaBrowseRequest(autoMediaItem)
// Queue is populated automatically, but button cannot be customized
}
}
}
}
Результаты исследования
  • Пользовательские действия и встроенные элементы управления: хотя addCustomAction() работает для кнопок перемешивания/рейтинга, эквивалента для кнопки очереди не существует.
  • Архитектура MediaSession Ограничение: кнопка очереди представляет собой управляемый системой элемент пользовательского интерфейса, который Android Auto отображает на основе вызовов setQueue().
  • Нет API-интерфейсов настройки для конкретных очередей: я не нашел таких методов, как setQueueButtonIcon() или подобных в MediaSessionCompat.
Попытки решения

Код: Выделить всё

// Attempt 1: Custom action to replace queue (doesn't work - shows as additional button)
builder.addCustomAction("CUSTOM_QUEUE", "Queue", R.drawable.custom_queue_icon);

// Attempt 2: Trying to intercept queue button (no such callback exists)
// onQueueButtonClicked() - doesn't exist

// Attempt 3: Modifying queue items to affect button (no effect on button appearance)
MediaDescriptionCompat.Builder builder = new MediaDescriptionCompat.Builder();
builder.setExtras(customExtras); // Doesn't affect queue button
Вопросы
  • Поддерживается ли настройка кнопки очереди? Могу ли я изменить значок или поведение кнопки очереди в Android Auto?
  • Существуют ли недокументированные API? Какие-либо скрытые методы или обходные пути для настройки кнопки очереди?
  • Является ли это ограничением платформы? Является ли кнопка очереди намеренно ненастраиваемой по соображениям согласованности/безопасности?
  • Альтернативные подходы? Должен ли я отключить встроенную очередь и реализовать индивидуальное решение?
Среда
  • AndroidX Media 1.x
  • Код: Выделить всё

    MediaBrowserServiceCompat
    + MediaSessionCompat
  • Android Auto (как головное устройство, так и мобильное устройство)
  • Таргетинг API 33+
Код показывает, что у нас есть полнофункциональная интеграция Android Auto с настраиваемыми действиями, но кнопка очереди остается единственным ненастраиваемым элементом. Будем очень признательны за любую информацию о том, сделано ли это намеренно или есть какие-то решения!

Подробнее здесь: https://stackoverflow.com/questions/797 ... -to-modify
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»