Notificaciones en el SO Android Automotive

Las notificaciones les proporcionan a los conductores información breve y oportuna sobre eventos de tu app cuando no está en uso. Esas notificaciones pueden aparecer en el Centro de notificaciones. Otras también pueden mostrarse como notificaciones emergentes en la pantalla. Si quieres crear notificaciones para el SO Android Automotive, debes usar la misma API de NotificationBuilder que usas para otros dispositivos. Sin embargo, para garantizar la seguridad de los conductores y minimizar las distracciones, algunas clases y métodos de la API están restringidos o se comportan de manera diferente.

Cómo difieren las notificaciones en automóviles

A los efectos de crear un entorno de conducción seguro y libre de distracciones, las notificaciones del SO Android Automotive son distintas de las de otros dispositivos. Las diferencias son las siguientes:

  • Interacción del usuario simplificada
  • Restricciones de UX según el estado de conducción

Interacción del usuario simplificada

Para garantizar que los conductores puedan concentrarse en la carretera, las notificaciones en el automóvil tienen un modelo de interacción simplificado con las siguientes características:

Ausencia de controles complejos
Las notificaciones no aceptan controles complejos, como presionar para expandir una notificación, mantener presionada una notificación para ver opciones adicionales o usar controles basados en gestos de longitud de deslizamiento.
Sonidos de notificaciones
Las notificaciones solo emiten un sonido si activan una notificación de atención.
Botones de reproducción automática y para silenciar en notificaciones de mensajes

El SO Android Automotive agrega automáticamente los botones Reproducir y Silenciar a todas las notificaciones de mensajes compatibles con vehículos.

  • Reproducir: Lee la notificación al conductor mediante el asistente digital predeterminado del usuario (como Asistente de Google) o el sistema de texto a voz predeterminado del vehículo.
  • Silenciar: Evita que aparezcan notificaciones de atención de los próximos mensajes en la conversación durante el resto del viaje. Las notificaciones de mensajes de una conversación silenciada aparecerán en el Centro de notificaciones, desde el cual el conductor podrá a su vez activar el sonido de la conversación.

Opciones simplificadas de visualización de notificaciones

No se admiten RemoteViews ni vistas de contenido personalizado. Además, tampoco se admiten los siguientes estilos de notificaciones:

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle

Si tu app envía una notificación al SO Android Automotive usando uno de estos estilos de notificaciones, solo se mostrará el texto de resumen.

Administración simplificada del canal de notificaciones

El SO Android Automotive no es compatible con los canales de notificaciones ni con las condiciones relacionadas de la IU para reducir la prevalencia de las tareas enriquecidas de administración en dispositivos de Automotive.

Restricciones de UX según el estado de conducción

El SO Android Automotive incluye un motor de restricciones de UX. Los fabricantes de automóviles pueden usar este motor para restringir las notificaciones según el estado de conducción del automóvil de las siguientes maneras:

  • Truncar las strings de notificaciones según una longitud de caracteres específica
  • Ocultar resúmenes de mensajes para las notificaciones de CATEGORY_MESSAGE
  • Limitar el número de notificaciones que puede mostrar el Centro de notificaciones

Tipos de recursos admitidos

De manera predeterminada, el SO Android Automotive admite un subconjunto limitado de tipos de recursos que se pueden usar para notificaciones en otros dispositivos. Este subconjunto incluye los siguientes tipos de recursos:

  • Elementos de diseño
  • Íconos
  • Imágenes

Requisitos de compatibilidad para las notificaciones de mensajes

Para proporcionar una experiencia del usuario coherente y con distracciones mínimas, las notificaciones de mensajes tienen requisitos especiales en el SO Android Automotive.

Las notificaciones de mensajería serán compatibles con vehículos si cumplen los siguientes requisitos:

  • Pertenecen a la categoría CATEGORY_MESSAGE.
  • Usan el estilo Notification.MessagingStyle.
  • Solo incluyen mensajes no leídos.
  • Tienen una Action de marcado como leído que cumple los siguientes requisitos:

  • Si la notificación tiene una Action de respuesta, entonces la Action cumple los siguientes requisitos:

Centro de notificaciones

Casi todas las notificaciones se muestran en el Centro de notificaciones, incluso si se activaron como notificaciones emergentes. Esas notificaciones persisten en el Centro de notificaciones mientras dura un viaje.

Los conductores pueden interactuar con las notificaciones en el Centro de notificaciones. Según el fabricante del automóvil, los conductores podrán acceder al Centro de notificaciones de una de las siguientes maneras:

  • Deslizando el dedo hacia abajo desde la parte superior de la pantalla (similar al panel lateral de notificaciones en otros dispositivos)
  • Presionando un botón en la interfaz del sistema

Notificaciones agrupadas

Las notificaciones relacionadas se agruparán automáticamente en el Centro de notificaciones, como sucede en el panel lateral de notificaciones en otros dispositivos. Sin embargo, cuando un conductor presiona el resumen de un grupo en el Centro de notificaciones, en lugar de lanzar un PendingIntent, se expande el grupo para mostrar todas sus notificaciones.

Notificaciones que no aparecen en el Centro de notificaciones

Las siguientes notificaciones no aparecen en el Centro de notificaciones:

  • Media playback. El SO Android Automotive recopila información sobre la reproducción de contenido multimedia en curso y la muestra en un lugar específico en la interfaz de usuario. Ten en cuenta que se debe llamar a setMediaSession con un token que no sea nulo para que la notificación se reconozca como reproducción de contenido multimedia.
  • Notificaciones de navegación paso a paso para CATEGORY_NAVIGATION
  • Notificaciones de servicio en primer plano para apps con privilegios del sistema y apps firmadas con la clave de plataforma que tienen un nivel de importancia menor que IMPORTANCE_DEFAULT

Notificaciones emergentes

Las notificaciones de atención aparecen como una tarjeta de notificación en la parte superior de la pantalla. Debido a que este tipo de notificaciones llama la atención del conductor, las apps solo deben activarlas cuando la información es urgente y fundamental para la conducción, y requiere una acción. Solo determinadas categorías de notificaciones pueden activar una notificación de atención.

Los fabricantes de automóviles pueden decidir si permiten las notificaciones de atención mientras esté abierto el Centro de notificaciones.

Cómo las apps activan las notificaciones de atención

Las apps tienen distintos requisitos para activar una notificación de atención, según tengan privilegios del sistema o no.

Apps con privilegios del sistema y apps firmadas con la clave de plataforma
La app puede activar una notificación de atención si la importancia del canal de notificaciones se estableció en IMPORTANCE_HIGH o un valor superior.
Todas las otras apps

La app puede activar una notificación de atención si la importancia del canal de notificaciones se estableció en IMPORTANCE_HIGH o un valor superior, y si la notificación pertenece a una de las siguientes categorías:

Duración de una notificación emergente

Cuando una app activa una notificación de atención, la notificación aparece al instante en la pantalla del automóvil. Si el conductor no realiza ninguna acción, la notificación de atención se descarta automáticamente después de ocho segundos, excepto en los siguientes casos:

  • No es posible descartar las notificaciones de atención de determinadas llamadas entrantes, por lo que permanecen en la pantalla hasta que el conductor acepta la llamada o esta finaliza. Para calificar como notificación de atención que no se puede descartar de una llamada entrante, la notificación debe cumplir los siguientes requisitos:

  • Las notificaciones de atención permanecen en la pantalla si una app actualiza la notificación dentro del período de ocho segundos.

Cuando se descarta una notificación de atención, aparece en el Centro de notificaciones, a menos que se trate de una notificación de CATEGORY_NAVIGATION.

Cambios de la API de Notification y restricciones para vehículos

En esta sección, se resumen las diferencias de cada clase en la que la API de Notifications se comporta de forma diferente o tiene restricciones para el SO Android Automotive.

Notification.Builder

Las Tablas 1 y 2 describen los cambios y las restricciones de la API en la clase Notification.Builder.

Tabla 1: Cambios en los métodos públicos de Notification.Builder

Métodos públicos Efecto Descripción

addAction()

No-op condicional Las notificaciones Notification.MessagingStyle deben agregar las acciones especificadas en los requisitos de compatibilidad. Las acciones adicionales que se agreguen no se procesarán como botones de notificación.

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

No-op No se admiten RemoteViews ni vistas de contenido personalizado.

setBadgeIconType()

setNumber()

No-op No se admiten las insignias de notificaciones.

setChronometerCountDown()

setUsesChronometer()

No-op No se admiten los temporizadores de cuenta regresiva.
setColorized() Cambio de limitaciones

Apps firmadas en la plataforma: Configurables y permitidas de forma predeterminada.

Apps con privilegios del sistema: Configuradas por la plataforma y no permitidas de forma predeterminada.

Todas las otras apps: Configuradas por la plataforma y no permitidas de forma predeterminada.

setFullScreenIntent() Cambio de comportamiento No inicia automáticamente el intent.
setLargeIcon() Cambio de comportamiento Los íconos grandes se muestran a la derecha de la notificación.
setLights() No-op Los dispositivos con SO Android Automotive no tienen luces con indicadores LED.
setOngoing() Cambio de comportamiento

El comportamiento es diferente cuando la notificación también activa una notificación de atención.

setOngoing() solo hace que no se pueda descartar la notificación de atención cuando se trata de una notificación de llamada entrante. Para calificar como notificación de atención que no se puede descartar de una llamada entrante, la notificación debe cumplir con setPublicVersion()

setVisibility()

No-op No se admite el modo privado.
setSettingsText() No-op Las notificaciones no admiten las funciones que vinculan a la configuración de una app. En su lugar, los conductores usan la app para acceder a su configuración.
setTicker() No-op No se admite el texto del visor.

Tabla 2: Cambios en las clases anidadas de Notification.Builder

Clases anidadas Efecto Descripción

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

Sin uso Solo se muestra el texto de resumen. No se admiten las notificaciones detalladas para estos estilos.
Notification.BubbleMetadata Sin usar No se admiten las burbujas.
Notification.MediaStyle Oculto Las notificaciones con este estilo están ocultas. El SO Android Automotive administra las interacciones de la interfaz de usuario para la reproducción y las notificaciones multimedia.
Notification.MessagingStyle Cambio de comportamiento

Las notificaciones con este estilo presentan las siguientes diferencias:

Notification.CarExtender

Notification.WearableExtender

Sin uso No se admiten los amplificadores.

Notification.Action.Builder

La Tabla 3 describe los cambios y las restricciones de la API en la clase Notification.Action.Builder.

Tabla 3: Cambios en los métodos públicos de Notification.Action.Builder

Métodos públicos Efecto Descripción
Constructores públicos Cambio de comportamiento Se ignoran los íconos especificados en los constructores públicos.
addRemoteInput Cambio de comportamiento Para minimizar la distracción del conductor, un asistente digital (como Asistente de Google) inserta la respuesta a un mensaje para el usuario. Los usuarios no pueden escribir mensajes.
setAllowGeneratedReplies No-op No se admite la Respuesta inteligente.