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

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

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

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

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

Android Авто

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

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

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

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

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

Медиаприложения создаются с помощью 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 OS подключаются к вашему приложению, они запрашивают библиотеку контента для отображения, что запускает метод обратного вызова 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 OS.
  4. Введите имя модуля .
  5. Измените имя пакета в соответствии с вашим приложением.
  6. Выберите API 28: Android 9.0 (Pie) для минимального SDK , а затем нажмите Далее .

    Все автомобили, поддерживающие Android Automotive OS, работают на базе 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 OS:

<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» . Необходимо следовать следующим инструкциям.

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

Чтобы указать, что ваше приложение поддерживает видео, добавьте 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"/>