Компоненты, взаимодействующие с Media, описаны в таблице:
| Компонент | Описание |
|---|---|
| Главный экран | Отображает другие элементы пользовательского интерфейса автомобиля, которые отображают и управляют воспроизводимым в данный момент медиаконтентом. В AOSP это главный экран, отображаемый при запуске системы. С этого экрана пользователи могут просмотреть подробную информацию о воспроизводимом медиафайле и выполнить ограниченный набор стандартных и пользовательских действий (например, воспроизведение и пауза). |
| Системный пользовательский интерфейс | Предоставляет функциональность, включающую глобальные параметры навигации по пользовательскому интерфейсу, например, для перехода к разделу «Медиа». |
| Помощники | Android предоставляет различные механизмы для взаимодействия приложений голосовых помощников с системой. Эти приложения могут взаимодействовать с источниками мультимедиа в фоновом режиме (например, воспроизводить песню в результате голосовой команды) или переходить к разделу «Мультимедиа» в активном режиме (например, когда приложению голосового помощника дается команда отобразить пользовательский интерфейс определенного источника мультимедиа). |
| Запуск приложений | Все приложения Android запускаются из панели запуска приложений, включая медиаисточники. Медиаприложения могут отображать собственный селектор источников мультимедиа, дополняя или заменяя панель запуска приложений в качестве отправной точки для воспроизведения медиафайлов. |
| Google Play Store | При использовании GAS пользователи находят и устанавливают новые приложения на свои устройства Android. Что касается медиафайлов, после установки приложений пользователи перенаправляются в раздел «Медиа», чтобы завершить процесс входа в систему или начать взаимодействие с приложением. |
| Менеджер медиасессий | Системная служба Android, которая отслеживает и управляет медиасессиями из всех источников мультимедиа. Она предоставляет механизмы для обнаружения момента, когда источник мультимедиа становится активным . Медиаприложения и все другие приложения, отображающие воспроизводимый в данный момент источник мультимедиа (например, главный экран), используют Media Session Manager для обнаружения этих событий и соответствующего обновления пользовательского интерфейса. Источники мультимедиа взаимодействуют с Media Session Manager посредством API Media Session . |
| Радио | Специализированное приложение для взаимодействия с радиооборудованием. Приложение осуществляет поиск радиостанций, быстро выбирает недавно обнаруженные станции и переключается между радиодиапазонами. Компоненты пользовательского интерфейса, общие для приложений «Радио» и «Медиа», позволяют пользователю переключаться между двумя режимами работы. |
| Двигатель, отвлекающий водителя | Системная служба Android используется для наложения ограничений на пользовательский интерфейс в зависимости от состояния автомобиля во время движения. Для пользовательского интерфейса входа в систему и настроек медиаисточников (где управление экраном осуществляется непосредственно медиаисточниками) эта служба гарантирует, что небезопасный контент не будет отображаться, когда автомобиль находится в режиме движения. Производители автомобилей могут настраивать определение этих состояний и то, как система реагирует в этих ситуациях (например, отображая блокирующее экранное наложение). |
Пользовательские сценарии
Запуск медиаприложения
Запуск медиафайлов должен осуществляться с использованием следующего неявного CAR_INTENT_ACTION_MEDIA_TEMPLATE . Этот интент может содержать следующую дополнительную информацию:
android.car.intent.extra.MEDIA_COMPONENT( необязательно ). Строка extra, представляющая собой имя компонентаMediaBrowserServiceв медиаприложении, к которому должен подключаться Media. Если не указано, Media отображает текущее выбранное медиаприложение. Этот интент используется в следующих точках входа:Системный интерфейс. Используется для возврата к интерфейсу мультимедиа или для его первого использования. В этом случае указанный выше Intent будет использоваться без каких-либо дополнительных настроек, чтобы отобразить текущее выбранное приложение мультимедиа.
Главный экран, помощники и центр уведомлений. Пользователи могут перейти в раздел «Медиа», чтобы отобразить выбранное в данный момент медиаприложение. Во всех случаях срабатывает неявное намерение без дополнительных настроек.
Панель запуска приложений. Когда пользователи выбирают медиаприложение из панели запуска приложений, указанный выше интент включает дополнительный параметр
CAR_EXTRA_MEDIA_COMPONENT, содержащий выбранное медиаприложение. Медиаприложение обозначает это как новое выбранное приложение и подключается к нему. Подробности см. в разделе ниже «Интеграция панели запуска приложений с медиаприложением».
Интеграция лаунчера приложений с медиафайлами
Приложениям для воспроизведения мультимедиа запрещено предоставлять какие-либо действия, помеченные категорией android.intent.category.LAUNCHER . В результате средство запуска приложений (или его эквивалент) должно реализовать специальную логику для интеграции с источниками мультимедиа:
Программа запуска приложений должна просканировать систему на наличие пакетов, реализующих
MediaBrowserService.SERVICE_INTERFACE. Для таких пакетов программа запуска приложений получает значок службы, аналогичный тому, который используется для получения других действий.Затем App Launcher объединяет эти пакеты с теми, которые реализуют действия
android.intent.category.LAUNCHER. Если приложение предоставляет реализациюMediaBrowserServiceи действие запуска, приоритет отдается службе.На момент написания этой статьи ни одно приложение-источник мультимедиа не может предоставить возможность запуска приложения.
- Пример такой логики можно найти в коде AOSP по адресу
AppLauncherUtils#getAllLauncherApps().
Процесс входа в систему и параметры настройки
В медиаприложениях может быть предусмотрена оптимизированная для автомобиля функция «Настройки». Такая функция может использоваться для реализации пользовательских сценариев, не поддерживаемых API Android Media, например:
- Войти
- Выход
- Смена учетной записи
- Отображает, к какой системе пользователь в данный момент авторизован (если таковая имеется).
- конфигурация службы
Данное действие «Настройки» объявляется медиаприложением с использованием следующего фильтра намерений:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
Средства массовой информации должны реализовать следующую логику:
Убедитесь, что выбранное в данный момент медиаприложение содержит действие с заданным фильтром намерений.
В таком случае предоставьте пользователю возможность перейти к нужному действию.
Если действуют ограничения на пользовательский интерфейс автомобиля (например, автомобиль движется), эту функцию следует отключить, поскольку раздел «Настройки» не является оптимизированным для водителя интерфейсом.
Обработка ошибок и необходимость входа в систему.
Взаимодействие медиаприложений с другими медиаприложениями осуществляется через API Android Media Session. В рамках этого API медиаприложение получает объект PlaybackState , который сообщает о текущем состоянии медиаприложения.
Процесс входа в систему начинается, когда медиаприложение изменяет PlaybackState на STATE_ERROR , включая определенный код ошибки (подробности см. ниже). В этом случае медиаприложение отображает описание ошибки и ссылку для перехода к действию входа в систему, реализованному медиаприложением.
Аналогичный алгоритм может использоваться приложениями для сигнализации о других ошибках (например, об ошибке подключения к серверу).
В рамках стандартной обработки ошибок PlaybackState , Media должна проверить наличие следующих входных данных.
Код ошибки
PlaybackStateравенPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Это означает, что для продолжения работы медиаприложения требуется авторизация. Могут быть получены и другие коды ошибок, указывающие на другие типы проблем.Сообщение об ошибке
PlaybackState(устанавливаемое медиаприложениями с помощью методаPlaybackStateCompat.Builder#setErrorMessage) содержит удобочитаемое объяснение (например, «Вы не вошли в систему»). Это сообщение должно отображаться пользователю и должно быть оптимизировано для предотвращения отвлечения внимания (DO).При желании
PlaybackStateможет включать следующие дополнительные параметры (устанавливаемые медиаприложениями с помощью методаPlaybackStateCompat.Builder#setExtras) со следующими ключами.android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Установите значение строки, содержащей удобочитаемое сообщение, которое будет отображаться при нажатии пользователем кнопки для запуска процесса авторизации.android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Устанавливается с помощьюPendingIntent, который срабатывает при нажатии пользователем на указанную выше кнопку. ЭтотPendingIntentуказывает на пользовательскую активность входа в систему, реализованную тем же медиа-приложением.
Состояние
PlaybackStateравноSTATE_ERROR. Это означает, что никакие другие операции невозможны до завершения входа в систему.