Обзор Android Automotive OS

Пользовательский интерфейс Android Automotive OS
Рисунок 1. Android Automotive OS

Android Automotive OS – это версия Android, оптимизированная для использования в автомобиле и расширяющая возможности основной платформы Android. Автомобили со встроенными сервисами Google работают на Android Automotive OS и поставляются с приложениями и сервисами Google, включая Google Play, Gemini, Google Ассистента и Google Карты.

Об аппаратном обеспечении Android Automotive OS

Чтобы узнать больше о минимальных требованиях к оборудованию для устройств с Android Automotive OS, ознакомьтесь с разделом Требования к автомобилям в перечне условий совместимости (CDD) для версий Android, которые поддерживает ваше приложение.

Вырезы на экране

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

Аудио

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

Общие сведения о ПО Android Automotive OS

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

Интерфейс системы

Есть некоторые различия в том, как эти элементы системного интерфейса работают в автомобилях, о которых вам следует знать.

В отличие от других типов устройств, на устройствах с Android Automotive OS не требуется аппаратная или программная кнопка "Назад". Если режим совместимости не используется, действия, выполняемые приложением, должны включать элементы интерфейса, позволяющие осуществлять навигацию в приложении в соответствии с рекомендациями по обеспечению качества AN-1.

Макет системной строки

Как и на других типах устройств, в Android Automotive OS есть системные строки, например строка состояния и панель навигации. В автомобилях эти панели могут иметь другой размер и расположение, чем на других устройствах. Например, панели навигации могут располагаться слева, справа или внизу экрана. Даже если в верхней части экрана есть строка состояния, а в нижней – панель навигации (как на большинстве телефонов и планшетов), в автомобилях эти элементы, скорее всего, будут намного больше.

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

Подробные инструкции вы найдете в статье Как работать с вставками окон и вырезами на экране.

Режим комфортного просмотра

Android Automotive OS позволяет OEM-производителям контролировать, могут ли приложения показывать или скрывать системные строки для входа в режим погружения и выхода из него. Запретив приложениям скрывать системные строки, производители могут обеспечить постоянный доступ к элементам управления автомобилем, например климат-контролю.

Ограничения, связанные с удобством для пользователей

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

Действие, блокирующее действие, которое показывается поверх приложения, не отмеченного как имеющее оптимизацию отвлекающих факторов.
Рисунок 2. Приложение заблокировано из-за ограничений UX

Производители автомобилей определяют правила, по которым активируются ограничения UX. Эти правила могут различаться в зависимости от региона. Например, для одного и того же автомобиля, проданного в Европе и США, могут действовать разные правила.

Правила ограничения UX также могут различаться в зависимости от дисплея в автомобиле. Например, центральный дисплей в поле зрения водителя может быть ограничен во время движения автомобиля, а дисплей пассажира – нет.

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

Оптимизация отвлекающих факторов

По умолчанию действия не могут выполняться, пока действуют ограничения UX, чтобы не отвлекать водителя. Чтобы указать системе, что действие должно продолжаться во время движения автомобиля, в соответствующий элемент <activity> можно добавить элемент <meta-data>.

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

При разработке приложений для Android Automotive OS эти метаданные должны присутствовать в манифесте, только если вы объявляете элемент манифеста <activity> для CarAppActivity приложения, созданного с помощью библиотеки приложений Car App Library. Не отмечайте другие действия как имеющие оптимизацию отвлекающих факторов. В противном случае ваше приложение будет отклонено при публикации в Google Play.

Специальные возможности

Поддержка специальных возможностей в Android Automotive OS не так широка, как на других типах устройств. TalkBack, Switch Access и Voice Access недоступны на устройствах с Android Automotive OS.

Настройки субтитров поддерживаются на устройствах с Android Automotive OS. Подробные сведения об интеграции приведены в разделе Применение системных настроек субтитров.

Выбор сети

Android Automotive OS поддерживает выбор сети для каждого приложения (PANS). Эта функция позволяет OEM-производителям направлять трафик мобильной сети в разные сети в зависимости от приложения.

Большинство приложений используют только назначенную им сеть по умолчанию и только выигрывают от этой функции. Например, OEM-производитель может оплачивать сетевой трафик из вашего приложения, даже если у пользователя нет собственного тарифного плана. Если ваше приложение или одна из его зависимостей использует сети, отличные от сети по умолчанию, то настройки, заданные производителем, могут не применяться. Подробнее о том, как использовать сети, отличные от сети по умолчанию…

Системные функции

Вы можете определить, доступна ли та или иная функция, с помощью PackageManager::hasSystemFeature и соответствующим образом настроить поведение приложения.

Аппаратные функции

Как и в случае с другими типами устройств, аппаратные функции, доступные в автомобилях, могут отличаться от функций мобильных устройств.

Ориентация экрана

Как и телевизоры, автомобили – это устройства с фиксированной ориентацией. В отличие от телевизоров, они бывают как в портретной, так и в альбомной ориентации. Чтобы приложения для Android Automotive OS можно было распространять на все автомобили, в них не должно быть явных или неявных требований к функциям android.hardware.screen.landscape и android.hardware.screen.portrait.

Местоположение сети

На многих устройствах с Android Automotive OS не реализован стек телефонии, который используется для определения местоположения по сети, поэтому они не сообщают о системной функции android.hardware.location.network. Хотя геолокация по сети может быть недоступна, доступ к приблизительному местоположению по-прежнему поддерживается. Подробнее о приблизительном местоположении в Android Automotive OS…

Функции ПО

Некоторые функции ПО, которые обычно есть на устройствах других типов, могут не поддерживаться на устройствах с Android Automotive OS. Например, следующие функции недоступны во многих автомобилях с Android Automotive OS:

Соответствие требованиям Google Play к продвижению

Чтобы распространять приложения для Android Automotive OS через Google Play, добавьте в файл AndroidManifest.xml элемент <uses-feature> для функции android.hardware.type.automotive.

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

Кроме того, если в вашем приложении есть явная декларация функции с android:required="true" или неявное требование функции для любой из перечисленных ниже функций, вам необходимо обновить или удалить их, чтобы требования к функциям вашего приложения не препятствовали его распространению на совместимые автомобили:

Для функций, явно объявленных с помощью android:required="true", вы можете сделать следующее:

  • Удалите элемент <uses-feature>, если функция не требуется неявно.
  • Явно объявите функцию с помощью android:required="false".

Для неявно запрашиваемых функций можно сделать следующее:

  • Явно объявите функцию с помощью android:required="false".
  • Удалите или обновите значения манифеста, которые вводят неявное требование к функции.

Изменение деклараций функций в манифесте не влияет на фактическую работу приложения, поэтому убедитесь, что оно по-прежнему работает правильно без этих функций.

Часто задаваемые вопросы

В каких автомобилях есть встроенные сервисы Google?

Список производителей, выпускающих автомобили со встроенными сервисами Google, можно найти на этом сайте. Технические характеристики и другие сведения об устройствах можно найти в каталоге устройств Play Console.