Расширьте свое мультимедийное приложение до Android для автомобилей

Перенесите свое приложение на автомобили под управлением ОС Android Auto или Android Automotive. Используйте одну архитектуру приложения, подходящую для обоих случаев, чтобы каждый пользователь мог наслаждаться вашим приложением.

Что такое Android для автомобилей?

Медиа-приложение для автомобилей может предоставить пользователям возможность беспрепятственно связать свою цифровую жизнь со своими автомобилями. Делая те же приложения для телефона доступными для автомобилей, вы повышаете удобство работы с пользователем. Этого можно добиться путем интеграции с Android Auto или Android Automotive OS.

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

Андроид Авто

Android Auto предоставляет оптимизированное для водителя приложение для пользователей, у которых есть телефон Android с приложением Android Auto и совместимая автомобильная или послепродажная стереосистема. Они могут использовать ваше приложение прямо на дисплее своего автомобиля, подключив свой телефон. Вы позволяете Android Auto подключаться к приложению вашего телефона, создавая службы, которые Android Auto использует для отображения водителю оптимизированного для водителя интерфейса.

Автомобильная ОС Android

Android Automotive OS — это информационно-развлекательная система на базе Android, встроенная в автомобили. Система автомобиля представляет собой автономное устройство на базе Android, оптимизированное для вождения. Благодаря ОС Android Automotive пользователи устанавливают ваше приложение непосредственно в автомобиль, а не на свои телефоны.

Поддерживаемые категории приложений

Мультимедийные приложения позволяют пользователям просматривать и воспроизводить музыку, радио, аудиокниги и другой аудиоконтент в автомобиле. Дополнительные сведения см. в разделе Создание приложений для воспроизведения звука для автомобилей . Дополнительную информацию также можно найти в разделе «Создание медиа-приложений для автомобилей» .

Медиа-приложения создаются с использованием MediaLibraryService и MediaSession . В Android Automotive OS вы также можете создавать экраны входа и настроек (для использования во время парковки) с помощью Views или Compose.

Видеоприложения позволяют пользователям просматривать потоковое видео, пока автомобиль припаркован. Основная цель этих приложений — отображение потокового видео. Эти приложения создаются с использованием Views или Compose. Дополнительные сведения см. в разделе Создание приложений воспроизведения видео для Android Automotive OS . Дополнительную информацию можно найти в разделе «Создание видеоприложений для Android Automotive OS» .

Создавайте приложения для воспроизведения звука для автомобилей

В этом руководстве предполагается, что у вас уже есть базовое приложение для воспроизведения мультимедиа. Если вы этого не сделали, для начала перейдите к разделу Создание базового приложения медиаплеера .

В этом руководстве представлена ​​информация о том, что вам нужно сделать, включая ссылки на дополнительные ресурсы с конкретными рекомендациями.

Компоненты воспроизведения

Media3 предлагает несколько ключевых компонентов для вариантов использования воспроизведения. Классы, составляющие эти компоненты, вам знакомы, если вы работали с предыдущими медиабиблиотеками Android.

На следующей диаграмме показано, как эти компоненты объединяются в типичном приложении.

Различные компоненты мультимедийного приложения, использующего Media3, соединяются между собой несколькими простыми способами благодаря совместному использованию интерфейсов и классов.
Рисунок 1. Компоненты медиа-приложения.

Дополнительную информацию см. в разделе Компоненты воспроизведения .

Реализация MediaLibraryService и MediaLibrarySession

MediaLibraryService предоставляет стандартизированный API для обслуживания и предоставления доступа к вашей медиатеке. Это необходимо при добавлении поддержки Android Auto или Android Automotive OS в ваше мультимедийное приложение, поскольку эти платформы предоставляют собственный безопасный для драйверов пользовательский интерфейс для вашей медиатеки. Дополнительные сведения о реализации и использовании MediaLibraryService см. в разделе Обслуживание контента с помощью MediaLibraryService .

Для управления воспроизведением используйте сеанс мультимедиа. API MediaSession предоставляет универсальный способ взаимодействия с аудио- или видеоплеером. Библиотека Jetpack Media3 включает MediaLibrarySession , которая расширяет MediaSession за счет добавления API просмотра контента.

Подключение мультимедийного сеанса к проигрывателю позволяет приложению рекламировать воспроизведение мультимедиа извне и получать команды воспроизведения из внешних источников, таких как Android Auto, Android Automotive OS или Google Assistant. Дополнительные сведения см. в разделах Управление и рекламирование воспроизведения с помощью MediaSession и Использование MediaLibrarySession .

Как минимум, ваш медиа-сеанс должен декларировать поддержку следующих команд проигрывателя:

В руководстве «Включение элементов управления воспроизведением» описаны способы настройки элементов управления воспроизведением в автомобиле.

Когда Android Auto или ОС Android Automotive подключаются к вашему приложению, они запрашивают библиотеку контента для отображения, что запускает метод обратного вызова onGetLibraryRoot() . Вы можете быстро вернуть корневой элемент мультимедиа, чтобы разрешить доступ к вашей библиотеке. Метод обратного вызова onGetChildren() вызывается, когда Android Auto или Android Automotive OS пытаются просмотреть более глубокие уровни вашей библиотеки контента.

Эти платформы налагают дополнительные ограничения на структуру вашей библиотеки контента. Подробные сведения о настройке отображения библиотеки содержимого см. в руководстве по созданию медиабраузера .

Заявить о поддержке Android Auto

Используйте следующую запись манифеста, чтобы объявить, что ваше приложение для телефона поддерживает Android Auto:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Эта запись манифеста относится к XML-файлу, в котором объявляются автомобильные возможности, поддерживаемые вашим приложением. Чтобы указать, что у вас есть мультимедийное приложение, добавьте XML-файл с именем automotive_app_desc.xml в каталог res/xml/ вашего проекта. Этот файл должен содержать следующее содержимое:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Заявить о поддержке Android Automotive OS

Вам необходимо создать автомобильный модуль, поскольку не вся логика вашего приложения может использоваться совместно с автомобильным приложением. Некоторые компоненты Android Automotive OS, такие как манифест, предъявляют требования к конкретной платформе. Создайте модуль, который сможет хранить код этих компонентов отдельно от другого кода вашего проекта, например кода, используемого для вашего мобильного приложения.

Выполните следующие шаги, чтобы добавить автомобильный модуль в свой проект:

  1. В Android Studio нажмите «Файл» > «Создать» > «Новый модуль» .
  2. Выберите «Автомобильный модуль» , затем нажмите «Далее» .
  3. Введите имя приложения/библиотеки . Это имя, которое пользователи видят для вашего приложения в ОС Android Automotive.
  4. Введите имя модуля .
  5. Настройте имя пакета в соответствии с вашим приложением.
  6. Выберите API 28: Android 9.0 (Pie) для минимального SDK и нажмите «Далее» .

    Все автомобили, поддерживающие ОС Android Automotive, работают на Android 9 (уровень API 28) или выше, поэтому выбор этого значения предназначен для всех совместимых автомобилей.

  7. Выберите «Нет активности» , а затем нажмите «Готово» .

После создания модуля в Android Studio откройте AndroidManifest.xml в новом автомобильном модуле:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

Элемент application содержит некоторую стандартную информацию о приложении, а также элемент uses-feature , который заявляет о поддержке Android Automotive OS. Обратите внимание, что в манифесте не объявлено никаких действий.

Если вы реализуете настройки или действия по входу в систему , добавьте их сюда. Эти действия инициируются системой с использованием явных намерений и являются единственными действиями, которые вы объявляете в манифесте вашего приложения Android Automotive OS.

После добавления каких-либо настроек или действий входа в систему заполните файл манифеста, установив атрибут android:appCategory="audio" в элементе application и добавив следующие элементы uses-feature :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

Явная установка для этих функций required="false" гарантирует, что ваше приложение не будет конфликтовать с доступными аппаратными функциями на устройствах с автомобильной ОС.

Используйте следующую запись манифеста, чтобы объявить, что ваше приложение поддерживает ОС Android Automotive:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Эта запись манифеста относится к XML-файлу, в котором объявляются автомобильные возможности, поддерживаемые вашим приложением.

Чтобы указать, что у вас есть мультимедийное приложение, добавьте XML-файл с именем automotive_app_desc.xml в каталог res/xml/ вашего проекта. Включите в этот файл следующее содержимое:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Фильтры намерений

Android Automotive OS использует явные намерения для запуска действий в вашем мультимедийном приложении. Не включайте в файл манифеста действия, имеющие фильтры намерений CATEGORY_LAUNCHER или ACTION_MAIN .

Действия, подобные приведенным в следующем примере, обычно предназначены для телефона или другого мобильного устройства. Объявите эти действия в модуле, который создает приложение для телефона, а не в модуле, который создает приложение для Android Automotive OS.

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

Дальнейшие шаги

Теперь, когда у вас есть приложение для Android Auto и Android Automotive OS, вы можете предпринять дополнительные шаги по оптимизации приложения для более безопасного использования во время вождения. Дополнительные рекомендации по обеспечению безопасного и удобного взаимодействия с пользователем см. в технических руководствах по голосовым действиям , средствам защиты от отвлечения внимания и обработке ошибок .

Создание приложений для воспроизведения видео для Android Automotive OS

Поскольку видеоприложения классифицируются отдельно от мультимедийных приложений в автомобилях, вам необходимо знать некоторые особые требования к видеоприложениям, как описано в разделах «Создание паркованных приложений для Android Automotive OS» и «Создание видеоприложений для Android Automotive OS» . Вам необходимо воспользоваться следующей инструкцией.

Отметьте свое приложение как видеоприложение

Чтобы указать, что ваше приложение поддерживает видео, добавьте XML-файл с именем automotive_app_desc.xml в каталог res/xml/ вашего проекта. В этот файл включите следующее содержимое:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

Затем в элементе application вашего манифеста добавьте следующий элемент meta-data ссылающийся на XML-файл:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>