Помимо поддержки приложений, созданных для использования во время вождения, Android Automotive OS поддерживает браузеры , игры и видеоприложения для использования во время парковки. Вы можете установить на автомобили то же приложение, что и на другие устройства с большим экраном, с небольшими изменениями.
Создание паркованных приложений для Android Automotive OS
Проверьте существующее приложение на эмуляторе Android Automotive OS.
Чтобы приступить к созданию приложения для Android Automotive OS, сначала протестируйте существующее приложение на эмуляторе Android Automotive OS. Чтобы настроить эмулятор, выполните действия, описанные в разделе «Тестирование с использованием эмулятора Android Automotive OS» . Затем вы можете запустить приложение, следуя инструкциям в разделе «Запуск приложения на эмуляторе» .
При запуске приложения следите за проблемами совместимости, например следующими:
- Экраны информационно-развлекательной системы имеют фиксированную ориентацию. Чтобы соответствовать рекомендациям по обеспечению качества автомобильных приложений , приложения должны поддерживать как книжную, так и альбомную ориентацию.
- API, доступные на других устройствах, могут быть недоступны в Android Automotive OS. Например, некоторые API-интерфейсы сервисов Google Play недоступны в ОС Android Automotive. Подробную информацию о том, как решить эти проблемы, см. в разделе «Отключение функций» .
Настройте файлы манифеста вашего приложения
Чтобы настроить таргетинг на Android Automotive OS, ваше приложение должно иметь определенные записи манифеста. При этом приложения, предназначенные для Android Automotive OS, отправляются в Play Store с использованием отдельного типа выпуска Automotive OS. Они проходят ручную проверку, чтобы убедиться, что они безопасны для использования в автомобиле. Дополнительные сведения см. в разделе Распространение приложений Android для автомобилей .
Требуемые функции Android Automotive OS
Чтобы быть размещенными в Play Store в автомобиле, приложения, созданные для Android Automotive OS, должны включать следующий элемент <uses-feature>
в файл AndroidManifest.xml
:
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
</manifest>
Приложения, отправленные на неавтомобильные треки, не могут объявлять элемент <uses-feature>
, показанный в предыдущем примере кода, поскольку они не могут зависеть от оборудования, специфичного для автомобиля. Таким образом, чтобы выпустить одно и то же приложение как для автомобильных, так и для неавтомобильных устройств, вам необходимо создать как минимум два варианта вашего приложения: один для автомобильных устройств и другой для мобильных устройств. Дополнительные сведения о создании этих отдельных вариантов см. в следующей документации:
Два варианта приложения могут иметь одно и то же имя пакета, но должны иметь разные коды версий, поскольку они загружаются в Play Store отдельно.
Кроме того, вместо использования отдельных вариантов вы можете использовать отдельные имена пакетов для мобильных и автомобильных APK-файлов или пакетов приложений. Чтобы понять компромиссы каждого подхода, обратитесь к разделу Имена пакетов в руководстве разработчика мультимедийных приложений.
В дополнение к элементу, показанному в предыдущем примере кода, приложения, созданные для Android Automotive OS, должны включать следующие элементы <uses-feature>
в корневой элемент <manifest>
:
<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"/>
Если вы явно установите для этих функций статус «Необязательные», это поможет гарантировать, что ваше приложение не будет конфликтовать с доступными аппаратными функциями на устройствах с Android Automotive OS.
Убедитесь, что нет отвлекающих действий.
Чтобы ваше приложение было доступно для использования только во время парковки, не включайте следующий элемент <meta-data>
ни в один элемент <activity>
в своем манифесте:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Без этих метаданных действия вашего приложения автоматически блокируются ОС, когда автомобиль переходит в режим вождения, чтобы водитель не отвлекался. Это происходит как обратный вызов жизненного цикла onPause
, во время которого вы должны приостановить воспроизведение видео и аудио из вашего приложения.
Записи манифеста для конкретных категорий
Помимо предыдущих требований, которые применяются ко всем припаркованным приложениям, к категориям видео и игр предъявляются дополнительные требования:
- Информацию о видеоприложениях см. в разделе Отметить свое приложение как видеоприложение .
- Информацию об играх см. в разделе «Отметить свое приложение как игру» .
Оптимизируйте свое приложение для Android Automotive OS
Чтобы предоставить пользователям максимальное удобство, при создании приложения для Android Automotive OS учитывайте следующие моменты.
Оптимизация для больших экранов
Экраны, присутствующие в автомобилях с ОС Android Automotive OS, по размеру, разрешению и соотношению сторон больше похожи на планшеты и складные устройства, чем на телефоны. Таким образом, оптимизация вашего приложения для больших экранов принесет пользу и вашим пользователям в автомобилях.
В частности, ознакомьтесь с руководствами «Поддержка различных размеров экрана» и «Перенос пользовательского интерфейса на адаптивные макеты» для получения подробной информации о том, как максимально эффективно использовать большие размеры экрана, а также с галереями мультимедиа и игр для вдохновения и рекомендаций по дизайну.
Другие оптимизации больших экранов, такие как совместимость ввода , не столь полезны для Android Automotive OS, но они все же могут улучшить взаимодействие с пользователем. Например, для навигации с помощью клавиатуры используются те же API, что и для поворотной навигации , поэтому любая оптимизация может принести пользу обоим форм-факторам.
Работа с оконными вставками и вырезами витрин.
Как и другие форм-факторы, ОС Android Automotive включает в себя элементы системного пользовательского интерфейса, такие как панели состояния и навигации, а также поддержку непрямоугольных дисплеев.
По умолчанию приложения рисуют в области, которая не перекрывается с системными панелями и вырезами дисплея. Однако вы можете захотеть, чтобы ваше приложение скрывало системные панели, отображало содержимое за ними или отображало содержимое в вырезе дисплея, как описано в разделе «Размещение приложения внутри оконных вставок» . Если ваше приложение поддерживает что-либо из этого, обратитесь к следующим подразделам, чтобы узнать, как обеспечить хорошую работу вашего приложения в экосистеме устройств Android Automotive OS.
Системные панели, режим погружения и сквозной рендеринг
Системные планки в автомобилях могут иметь размеры и располагаться иначе, чем в других форм-факторах. Например, панели навигации могут располагаться слева, справа или внизу экрана. Даже в том случае, если сверху находится строка состояния, а снизу — панель навигации (как в большинстве телефонов и планшетов), в автомобилях размер этих элементов, скорее всего, будет намного больше.
Кроме того, ОС Android Automotive позволяет OEM-производителям контролировать, могут ли приложения отображать или скрывать системные панели для входа в режим погружения и выхода из него . Например, запретив приложениям скрывать системные панели, OEM-производители могут гарантировать, что элементы управления автомобилем, такие как климат-контроль, всегда будут доступны на экране. Если OEM-производитель запретил приложениям управлять системными панелями, ничего не происходит, когда приложение вызывает API-интерфейсы WindowInsetsController
(или WindowInsetsControllerCompat
) для отображения или скрытия системных панелей. Обратитесь к документации по show
и hide
чтобы узнать больше о том, как определить, может ли ваше приложение изменять вставки.
Аналогичным образом, OEM-производители также могут контролировать, могут ли приложения устанавливать цвет и прозрачность системных панелей, чтобы гарантировать, что панели и элементы, содержащиеся в них, всегда четко видны. Если ваше приложение отображает от края до края, убедитесь, что за системными панелями отображается только некритичный контент. Это содержимое может быть не видно, если OEM-производитель устройства запрещает настройку цвета или прозрачности полос.
<!-- Depending on OEM configuration, these style declarations
(and the corresponding runtime calls) may be ignored -->
<style name="...">
<item name="android:statusBarColor">...</item>
<item name="android:navigationBarColor">...</item>
<item name="android:windowTranslucentStatus">...</item>
<item name="android:windowTranslucentNavigation">...</status>
</style>
Если ваше приложение работает от края до края, не делайте предположений о размере, количестве, типе или расположении системных панелей. Вместо этого используйте API-интерфейсы вставок окон, чтобы расположить содержимое вашего приложения относительно системных панелей. Дополнительные сведения о том, как использовать эти API, см. в разделе Отображение контента от края до края в вашем приложении . Жестко закодированные значения заполнения, которые, хотя и не рекомендуются, могут сохранять контент в безопасной зоне на других устройствах, но не в автомобилях.
Адаптация к дисплеям неправильной формы
Помимо прямоугольных дисплеев, некоторые автомобили могут иметь экраны неправильной формы, например, показанные на рисунке 1 :
Если ваше приложение не отображает от края до края, вам не нужно ничего делать, чтобы оно отображалось в безопасной области.
Если ваше приложение отображает от края до края, вы можете выбрать, как оно будет вести себя в отношении вырезов экрана. Это можно сделать с помощью ресурсов, установив атрибут android:windowLayoutInDisplayCutoutMode
для темы вашего приложения или во время выполнения, изменив атрибут окна layoutInDisplayCutoutMode
.
Поскольку типы вырезов дисплея, присутствующие на устройствах Android Automotive OS, отличаются от типов вырезов на мобильных устройствах, не используйте LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
или LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
, поведение которых оптимизировано для вырезов, обнаруженных на мобильных устройствах. Вместо этого используйте LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
или LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
чтобы всегда избегать или всегда входить в вырез. При выборе последнего варианта см. раздел Поддержка вырезов дисплея для получения более подробной информации об API, связанных с вырезами дисплея.
Если ваше приложение отображается в области выреза дисплея и вы хотите, чтобы поведение Android Automotive OS и мобильных устройств различно, см. инструкции в разделах Отключение функций , если ваше приложение устанавливает такое поведение во время выполнения, и Использование альтернативных ресурсов, если ваше приложение устанавливает такое поведение с помощью ресурса. файлы.
Отключить функции
Если вы делаете существующее мобильное приложение доступным для ОС Android Automotive, некоторые функции и возможности могут быть неактуальны или недоступны. Например, автомобили обычно не обеспечивают доступа к камерам. Кроме того, в ОС Android Automotive доступна только часть сервисов Google Play; дополнительную информацию см. в сервисах Google Play для автомобилей .
Вы можете использовать API PackageManager.hasSystemFeature
, чтобы определить, работает ли приложение в ОС Android Automotive, проверив функцию FEATURE_AUTOMOTIVE
, как показано в следующем примере:
Котлин
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Ява
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Кроме того, если в вашем приложении также есть компонент Android Auto, вы можете использовать API CarConnection из библиотеки приложений Android для автомобилей , чтобы определить, работает ли приложение в ОС Android Automotive или Android Auto или оно не подключено к автомобилю в данный момент. все.
Для режима «Картинка в картинке» (PiP) следуйте установленным рекомендациям , чтобы проверить, доступна ли эта функция, и отреагировать соответствующим образом.
Обработка офлайн-сценариев
Хотя автомобили все чаще подключаются к Интернету, приложениям рекомендуется работать без подключения к Интернету, например, в следующих случаях:
- Пользователи могут отказаться от мобильных данных, предлагаемых в рамках пакета подписки от автопроизводителя.
- Доступ к мобильным данным может быть ограничен в определенных регионах.
- Автомобили с радиоприемниками Wi-Fi могут находиться вне зоны действия Wi-Fi, или OEM-производитель может отключить Wi-Fi в пользу мобильной сети.
Будьте готовы справиться с этими сценариями в своем приложении, постепенно снижая функциональность, зависящую от доступа к Интернету, например, предлагая офлайн-контент. Для получения дополнительной информации ознакомьтесь с рекомендациями по оптимизации сети .
Используйте альтернативные ресурсы
Чтобы адаптировать приложение для автомобилей, вы можете использовать квалификатор ресурса car
, чтобы предоставить альтернативные ресурсы при работе на автомобиле с ОС Android Automotive. Например, если вы используете ресурсы измерения для хранения значений заполнения, вы можете использовать большее значение для набора ресурсов car
, чтобы увеличить целевые объекты касания.
Распространяйте свое приложение
После того как вы протестировали свое приложение на соответствие рекомендациям по обеспечению качества автомобильных приложений для своей категории и создали сборку для автомобильной ОС Android со всеми необходимыми изменениями для этой категории, вы можете опубликовать его в треках форм-фактора автомобильной ОС в магазине Play Store. Дополнительные сведения о процессе публикации см. в разделе Распространение приложений Android для автомобилей .
Оставьте отзыв о припаркованных приложениях
Если вы столкнулись с проблемой или у вас есть запрос на добавление функции при разработке припаркованного приложения для Android Automotive OS, вы можете сообщить об этом с помощью Google Issue Tracker . Обязательно заполните всю запрашиваемую информацию в шаблоне вопроса. Прежде чем регистрировать новую проблему, проверьте, есть ли о ней уже в списке проблем. Вы можете подписаться и проголосовать за проблемы, щелкнув звездочку проблемы в трекере. Дополнительную информацию см. в разделе «Подписка на выпуск» .