Уведомления в автомобильной ОС Android

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

Чем отличаются уведомления в автомобилях

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

  • Упрощенное взаимодействие с пользователем
  • Ограничения UX в зависимости от состояния диска

Упрощенное взаимодействие с пользователем

Чтобы помочь водителям сосредоточиться на дороге, уведомления в автомобиле имеют упрощенную модель взаимодействия с пользователем со следующими функциями:

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

Android Automotive OS автоматически добавляет кнопки воспроизведения и отключения звука во все уведомления, совместимые с автомобилями .

  • Воспроизведение: зачитывает уведомление водителю с помощью цифрового помощника пользователя по умолчанию, например Google Assistant, или стандартной системы преобразования текста в речь автомобиля.
  • Отключить звук: предотвращает появление всплывающих уведомлений о будущих сообщениях в разговоре до конца поездки. Уведомления о сообщениях из разговора, звук которого отключен, по-прежнему отображаются в Центре уведомлений, и водитель также может включить звук разговора в Центре уведомлений.

Упрощенные параметры отображения уведомлений

RemoteViews и пользовательские представления содержимого не поддерживаются. Кроме того, не поддерживаются следующие стили уведомлений:

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle
  • ProgressStyle

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

Упрощенное управление каналами уведомлений

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

Ограничения UX в зависимости от состояния диска

В состав Android Automotive OS входит механизм ограничений пользовательского опыта (UX Restrictions Engine). Автопроизводители могут использовать этот механизм для ограничения уведомлений в зависимости от состояния автомобиля следующими способами:

  • Усечение строк уведомлений до определенной длины символов
  • Скрытие сводок сообщений для уведомлений CATEGORY_MESSAGE
  • Ограничение количества уведомлений, которые может отображать Центр уведомлений

Поддерживаемые типы ресурсов

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

  • Чертежи
  • Иконки
  • Изображения

Требования совместимости для уведомлений о сообщениях

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

Уведомление о сообщении совместимо с автомобилем, если оно соответствует следующим требованиям:

  • Относится к категории CATEGORY_MESSAGE .
  • Используется стиль Notification.MessagingStyle .
  • Включает только непрочитанные сообщения.
  • Имеет Action «Отметить как прочитанное», которое соответствует следующим требованиям:

    • Семантическое действие установлено на Action.SEMANTIC_ACTION_MARK_AS_READ .
    • Action указывает, что при запуске оно не отображает никакого пользовательского интерфейса.
  • Если уведомление имеет ответное Action , то Action отвечает следующим требованиям:

    • Семантическое действие задается как Action.SEMANTIC_ACTION_REPLY .
    • Action указывает, что при запуске оно не отображает никакого пользовательского интерфейса.
    • Action содержит один RemoteInput .

Центр уведомлений

Почти все уведомления отображаются в Центре уведомлений, даже если они также были вызваны как предупредительные уведомления. Уведомления сохраняются в Центре уведомлений на протяжении всей поездки.

Водители могут взаимодействовать с уведомлениями в Центре уведомлений. В зависимости от производителя автомобиля, доступ к Центру уведомлений осуществляется одним или обоими из следующих способов:

  • Проведите пальцем вниз от верхней части экрана, аналогично панели уведомлений на других устройствах.
  • Нажатие кнопки в системном интерфейсе.

Группированные уведомления

Связанные уведомления автоматически группируются в Центре уведомлений, как и в панели уведомлений на других устройствах. Однако, когда водитель нажимает на сводку группы в Центре уведомлений, вместо запуска PendingIntent группа разворачивается, отображая все свои уведомления.

Уведомления, которые не отображаются в Центре уведомлений

Следующие уведомления не отображаются в Центре уведомлений:

  • Уведомления Media playback . Информация о текущем воспроизведении медиафайлов собирается ОС Android Automotive и отображается в специальном месте пользовательского интерфейса. Обратите внимание, что для распознавания уведомления как воспроизведения медиафайлов необходимо вызвать setMediaSession с ненулевым токеном.
  • Пошаговые навигационные уведомления для CATEGORY_NAVIGATION .
  • Уведомления службы переднего плана для привилегированных системных приложений и приложений, подписанных ключом платформы, уровень важности которых ниже IMPORTANCE_DEFAULT .

Уведомления Heads-Up

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

Производители автомобилей могут решить, разрешать ли показ всплывающих уведомлений, пока открыт Центр уведомлений.

Как приложения запускают всплывающие уведомления

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

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

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

Жизнь предупреждающего уведомления

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

  • Всплывающие уведомления о некоторых входящих вызовах нельзя отклонить, и они остаются на экране до тех пор, пока водитель не примет вызов или вызов не будет прерван. Чтобы считаться неотключаемым всплывающим уведомлением о входящем вызове, уведомление должно соответствовать следующим требованиям:

  • Уведомления сохраняются, если приложение обновляет уведомление в течение восьмисекундного временного окна.

При отклонении уведомления о заголовке оно отображается в Центре уведомлений, если только это не уведомление CATEGORY_NAVIGATION .

Изменения и ограничения API уведомлений для автомобилей

В этом разделе обобщены различия для каждого класса, в котором API уведомлений ведет себя по-разному или имеет ограничения для Android Automotive OS.

Notification.Builder

В таблицах 1 и 2 описаны изменения и ограничения API в классе Notification.Builder .

Таблица 1. Изменения в публичных методах Notification.Builder

Публичные методы Эффект Описание

addAction()

Условный ноль операции Уведомления Notification.MessagingStyle должны добавлять действия, указанные в требованиях к совместимости . Любые дополнительные действия не будут отображаться как кнопки уведомлений.

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

No-op RemoteViews и пользовательские представления содержимого не поддерживаются.

setBadgeIconType()

setNumber()

No-op Значки уведомлений не поддерживаются.

setChronometerCountDown()

setUsesChronometer()

No-op Таймеры обратного отсчета не поддерживаются.
setColorized() Ограничения изменены

Приложения, подписанные платформой : настраиваемые; разрешены по умолчанию.

Приложения с системными привилегиями : настраиваются платформой; запрещены по умолчанию.

Все остальные приложения : настраиваются платформой; по умолчанию запрещены.

setFullScreenIntent() Поведение изменилось Не запускает намерение автоматически.
setLargeIcon() Поведение изменилось Крупные значки отображаются в правой части уведомления.
setLights() No-op Устройства на базе Android Automotive OS не имеют светодиодных индикаторов.
setOngoing() Поведение изменилось

Поведение отличается, когда уведомление также запускает всплывающее уведомление.

setOngoing() делает уведомление неотключаемым только для входящего вызова. Чтобы считаться неотключаемым уведомлением для входящего вызова, уведомление должно соответствовать методу setPublicVersion().

setVisibility()

No-op Приватный режим не поддерживается.
setSettingsText() No-op Уведомления не поддерживают возможности, связанные с настройками приложения. Водители получают доступ к настройкам приложения через само приложение.
setTicker() No-op Текст тикера не поддерживается.

Таблица 2. Изменения во вложенных классах для Notification.Builder

Вложенные классы Эффект Описание

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

Не используется Отображается только текст-сводка. Подробные уведомления для этих стилей не поддерживаются.
Notification.BubbleMetadata Не используется Пузыри не поддерживаются.
Notification.MediaStyle Скрытый Уведомления с этим стилем скрыты. Android Automotive OS управляет взаимодействием с пользовательским интерфейсом для уведомлений о мультимедиа и воспроизведения.
Notification.MessagingStyle Поведение изменилось

Уведомления с этим стилем имеют следующие отличия:

Notification.CarExtender

Notification.WearableExtender

Не используется Расширители не поддерживаются.

Уведомление.Действие.Конструктор

В таблице 3 описаны изменения и ограничения API в классе Notification.Action.Builder .

Таблица 3. Изменения в публичных методах Notification.Action.Builder

Публичные методы Эффект Описание
Публичные конструкторы Поведение изменилось Значки, указанные в публичных конструкторах, игнорируются.
addRemoteInput Поведение изменилось Чтобы минимизировать отвлечение водителя, цифровой помощник, например, Google Assistant, автоматически вставляет ответ на сообщение. Вводить сообщения вручную не разрешается.
setAllowGeneratedReplies No-op Умный ответ не поддерживается.