Разместите свое приложение на автомобилях, работающих под управлением Android Auto или Android Automotive OS. Используйте единую архитектуру приложения, подходящую для обоих случаев, чтобы каждый пользователь мог пользоваться вашим приложением.
Что такое Android для автомобилей?
Приложение для управления автомобилем, позволяющее пользователям беспрепятственно интегрировать свою цифровую жизнь с транспортным средством, может обеспечить удобство использования. Расширение функционала таких же приложений для телефонов и их совместимость с автомобилями позволяет улучшить пользовательский опыт. Этого можно достичь путем интеграции с Android Auto или Android Automotive OS.
Приложения для автомобилей на Android должны в первую очередь избегать отвлечения внимания водителя. Свести отвлекающие факторы к минимуму можно, следуя передовым практикам, таким как использование голосовых команд и очень практичный визуальный дизайн. Таким образом, ваше мультимедийное приложение сможет показывать водителю актуальную информацию только тогда, когда это необходимо, и использовать предсказуемые шаблоны для выполнения распространенных задач.
Android Auto
Android Auto предоставляет пользователям Android-смартфоны с установленным приложением Android Auto и совместимые автомобильные или дополнительные аудиосистемы оптимизированный для водителя интерфейс приложения. Они могут использовать ваше приложение непосредственно на дисплее своего автомобиля, подключив телефон. Для подключения Android Auto к вашему мобильному приложению необходимо создать службы, которые Android Auto будет использовать для отображения оптимизированного для водителя интерфейса.
Android Automotive OS
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.
Следующая диаграмма демонстрирует, как эти компоненты объединяются в типичном приложении.
Для получения более подробной информации см. Компоненты воспроизведения .
Реализуйте 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, такие как манифест, имеют специфические для платформы требования. Создайте модуль, который позволит отделить код для этих компонентов от остального кода вашего проекта, например, от кода, используемого для вашего мобильного приложения.
Чтобы добавить автомобильный модуль в свой проект, выполните следующие действия:
- В Android Studio нажмите Файл > Создать > Новый модуль .
- Выберите «Автомобильный модуль» , затем нажмите «Далее» .
- Введите название приложения/библиотеки . Это название, которое пользователи будут видеть для вашего приложения в операционной системе Android Automotive.
- Введите название модуля .
- Измените имя пакета в соответствии с вашим приложением.
Выберите API 28: Android 9.0 (Pie) в качестве минимального набора SDK , а затем нажмите «Далее» .
Все автомобили, поддерживающие ОС Android Automotive, работают на Android 9 (уровень API 28) или выше, поэтому выбор этого значения будет применяться ко всем совместимым автомобилям.
Выберите «Без действий» , а затем нажмите «Готово» .
После создания модуля в Android Studio откройте файл AndroidManifest.xml в вашем новом модуле Automotive:
<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" гарантирует, что ваше приложение не будет конфликтовать с доступными аппаратными функциями в устройствах с Automotive OS.
Используйте следующую запись в манифесте, чтобы объявить о поддержке вашей операционной системы 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» . Вам необходимо следовать приведенным ниже инструкциям.
Отметьте свое приложение как видеоприложение
Чтобы указать, что ваше приложение поддерживает видео, добавьте 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"/>