Cómo implementar la IU del sistema

Android Automotive proporciona una nueva IU de sistema desarrollada específicamente para vehículos. La mayoría de los componentes de la IU del sistema tienen acoplamiento alto con servicios de framework. La IU del sistema se refiere a cualquier se muestra en la pantalla que no es parte de una app. La IU de Automotive System (en la CarSystemUI element) es una extensión de la IU del sistema Android (en el paquete de la IU del sistema). que se personalizó específicamente para vehículos.

¿Qué es la IU del sistema?

Entre los componentes específicos de la IU del sistema Automotive, se incluyen los siguientes:

Componente Descripción
IU de pantalla de bloqueo Pantalla a través de la cual los usuarios se autentican en una cuenta de usuario específica.
Barra de navegación La barra del sistema que se puede colocar a la izquierda, abajo o a la derecha de la pantalla y que pueden incluir botones de faceta para navegar a diferentes apps, activar o desactivar el panel de notificaciones y proporcionar controles del vehículo (como HVAC) Esto difiere de la IU del sistema Android que proporciona los botones Atrás, Inicio y pila de apps.
Barra de estado Barra del sistema que se coloca a lo largo de la pantalla y que funciona como barra de navegación. El La barra de estado también proporciona funciones para admitir lo siguiente:
  • Íconos de conectividad incluidas las conexiones Bluetooth, Wi-Fi y hotspot/móvil.
  • Panel desplegable de notificaciones. Por ejemplo, desliza el dedo hacia abajo desde la parte superior de la pantalla.
  • Notificaciones de atención (HUN).
IU del sistema Hace referencia a cualquier elemento que se muestra en la pantalla y que no forma parte de una app.
IU del selector de usuarios Pantalla a través de la cual un usuario puede seleccionar un usuario diferente.
IU del volumen Diálogo que se muestra cuando el conductor usa botones de volumen físicos para cambiar el volumen de una dispositivo.

¿Cómo funciona la IU del sistema?

La IU del sistema es una app para Android que se ejecuta cuando un dispositivo está encendido. El app se inicia mediante la reflexión del SystemServer: A continuación, se indican los puntos de entrada más relevantes para los aspectos visibles para el usuario de la IU del sistema. Usa estos componentes para personalizar la IU del sistema Android para capacidades específicas de Automotive.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI es una extensión del paquete de IU del sistema, lo que significa que las clases y Los recursos del paquete de IU del sistema se pueden usar y anular con el paquete CarSystemUI.

Personalizar la IU del sistema

Superposiciones

Si bien puedes modificar el código fuente de Android para personalizar la IU del sistema, De este modo, se vuelve más difícil y complejo aplicar actualizaciones futuras de Android. En cambio, Android admite el uso de un directorio de superposición, que te permite reemplazar archivos de recursos sin modificar el código fuente. En el sistema de compilación de Android, el sistema de superposición anula los archivos de una forma controlada. Todos los archivos modificados están claramente identificados sin recorrer toda la árbol del código fuente de AOSP.

Los archivos de superposición deben colocarse en el directorio PRODUCT_PACKAGE_OVERLAYS y deben tener exactamente las mismas subcarpetas que la estructura raíz original del AOSP. Para Android 10 o superior, PRODUCT_PACKAGE_OVERLAYS se establece en:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

La IU de Automotive System usa recursos de la IU del sistema y los paquetes de CarSystemUI. lo que significa que los recursos de cada ubicación pueden anularse con superposiciones para modificar el de la IU de Automotive System.

Para reemplazar un archivo, replica la estructura del directorio del archivo que vas a reemplazar en el /overlay que especificaste y, luego, incluye el reemplazo en ese . Por ejemplo, para reemplazar lo siguiente:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

Agrega el archivo de reemplazo super_status_bar.xml ubicado en:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

Para reemplazar frameworks/base/packages/SystemUI/res/values/config.xml, haz lo siguiente: (en la IU del sistema, no en CarSystemUI), agrega el archivo config.xml de reemplazo a lo siguiente:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

o

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

A continuación, se proporcionan descripciones de los dos puntos de entrada principales para la personalización.

La IU de Automotive System puede tener tres barras de navegación a la izquierda, abajo y a la derecha de la en la pantalla. La visibilidad de cada barra del sistema se activa o desactiva con las siguientes configuraciones:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Cada barra tiene un estado aprovisionado y no aprovisionado, que se puede personalizar superponiendo archivos de diseño respectivos:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (diseño de la barra de navegación inferior)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

Estos diseños deben contener com.android.systemui.car.systembar.CarSystemBarView en el nivel superior, que puede incluir cualquier otra vista necesaria. Los botones dentro de las barras de navegación se pueden incluir con com.android.systemui.car.systembar.CarSystemBarButton

Estas vistas aumentan en CarSystemBar#createSystemBar, si el dispositivo se aprovisionó correctamente para un usuario determinado.

Barra de estado

Considera la barra de estado como una barra de navegación con funciones adicionales. A diferencia de la navegación la barra de estado no tiene una marca para inhabilitarla. Puedes modificar la barra de estado con lo siguiente:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Estos diseños deben contener com.android.systemui.statusbar.car.CarNavigationBarView en el nivel superior. La barra de estado contiene íconos de estado. Para cambiar el tamaño de un icono, ajusta la escala del de manera uniforme con un factor de escala en lugar de especificar un tamaño específico. Por ejemplo, en una superposición archivo /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml, agrega las siguientes dimensiones para duplicar el tamaño de los íconos:

<resources>
    <!-- The amount by which to scale up the status bar icons.-->
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item>
</resources>

La barra de estado se encuentra en una capa especial de renderización en ventanas que también incluye el panel de notificaciones, el selector de usuarios, las notificaciones de atención (HUNs) y el bloqueo del teclado. Los distintos diseños para estos se incluyen en super_status_bar.xml

Cambios en el código fuente de la IU del sistema

Es posible que las superposiciones no brinden la flexibilidad necesaria para personalizar de forma suficiente el comportamiento de la IU del sistema.

Alerta. Los cambios realizados en el código fuente de Android son difíciles de actualizar en versiones posteriores de Android. Te recomendamos que extiendas el código de IU del sistema Automotive en lugar de modificar directamente el código. De esta manera, el código fuente subyacente de la IU de Automotive System puede actualizarse con conflictos de combinación mínimos, ya que todas las personalizaciones se implementan a través de plataformas de API conocidas.

La mayoría de los aspectos de la IU del sistema se pueden personalizar a través de estos dos puntos de entrada:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Por ejemplo, si creas una clase llamada com.android.systemui.statusbar.car.custom.CustomCarStatusBar, que extiende CarStatusBar, actualiza config_statusBarComponent al punto a este nuevo componente. Extender esta clase permite la personalización de la mayoría de los elementos que pertenecen a la barra del sistema y a la lógica de notificaciones.

Del mismo modo, puedes crear CustomCarSystemUIFactory y colocarlo en config_systemUIFactoryComponent Usa esta clase para actualizar la funcionalidad de la VolumeUI y pantalla de bloqueo.

Cómo personalizar el cambio y desbloqueo de usuarios

En el siguiente material, se describe cómo personalizar la experiencia de cambio de los usuarios.

Término Descripción
Bloqueo de teclado Diálogo de pantalla completa para evitar la interacción accidental con la app en primer plano. Protege la privacidad de cada usuario cuando se configuran varios usuarios.
Cargando diálogo Pantalla de carga que se muestra cuando se cambia de un usuario a otro.
Pantalla de bloqueo, rebote La pantalla requiere que la persona ingrese un PIN, un patrón o una contraseña.
Usuario Usuario de Android.
Selector de usuarios Pantalla del selector de usuarios que se muestra cuando se inicia un dispositivo.
Selector de usuario El selector de usuarios se muestra al cambiar de pantalla desde QuickSettings.

Personaliza el cambio de usuarios

Bloqueo de teclado y portero

En el SO Android Automotive, la pantalla de bloqueo de teclado con un selector de usuario se muestra solo. Cuando un usuario hace clic en el botón Cancelar en la pantalla de bloqueo. A continuación, se muestra la pantalla de bloqueo de teclado.

Pantalla de bloqueo del teclado

Figura 1: Pantalla de bloqueo de teclado

Se muestra una pantalla de bloqueo con un rebote cuando el usuario selecciona un tipo de privacidad con el cual desbloquear el dispositivo, como se muestra a continuación.

Pantalla de bloqueo

Figura 2: Pantalla de bloqueo.

Cuando la cerradura esté configurada para activar o desactivar manualmente el encendido o apagado, sigue la siguiente instrucción:

adb shell input keyevent 26

Selector de usuarios

La pantalla del selector de usuario se muestra cuando un dispositivo es parte integral de la barra de estado de la IU del sistema del vehículo. y Maps se reinicia. Para obtener más información, consulta FullscreenUserSwitcher

Pantalla de carga

Figura 3: Pantalla del selector de usuarios

El diseño de esta pantalla se puede personalizar en car_fullscreen_user_switcher.xml

Pantalla de carga

La pantalla de carga se muestra cada vez que se cambia un usuario, independientemente del punto de entrada. Para ejemplo, a través del selector de usuario o de la pantalla de configuración. La pantalla de carga es integral de la IU del sistema del framework y se asigna a la clase pública denominada CarUserSwitchingDialog Consulta la Figura 3 para ver un ejemplo.

El tema se puede personalizar con el Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog

Para configurar el usuario de Android, el flujo del asistente de configuración inicial permite que el controlador configure un usuario para ellos mismos. Si el conductor asocia al usuario de Android con una Cuenta de Google, el usuario seleccionado de esa cuenta. Sin embargo, si el controlador especifica un nombre, como DriverB, y luego asocia ese nombre de usuario a su Cuenta de Google con el nombre de Maddy, el El nombre asignado originalmente (DriverB) no se cambia porque se estableció explícitamente. El conductor puede cambiar el nombre solo en el menú Configuración.

El diseño se puede personalizar en car_user_switching_dialog.xml.

Los OEM pueden ocultar el estado y la barra de navegación usando el tema llamado NoActionBar.Fullscreen (Esta es la IU del sistema original, actualizada para la IU de referencia del vehículo). Para obtener más información, consulta Personalización.

Si bien los OEM pueden proporcionar puntos de entrada de interfaz de usuario para cambiar de usuario, indeseable. En caso de que esto ocurra:

  1. El OEM crea y muestra la pantalla de carga (o diálogo) personalizada.
    • De manera específica para la UX, el OEM inicia la pantalla de carga personalizada cuando un usuario selecciona los medios para de usuario, que puede ocultarse cuando se completa el cambio de usuario.
    • El OEM debe establecer la prioridad window según su preferencia. Por ejemplo, un tipo de ventana de mayor prioridad. Prioridad la prioridad no puede superar la de la protección de seguridad.
  2. El OEM establece config_customUserSwitchUi=true en el framework principal. config.xml como se describe en config_customuserswitchui. Como Como resultado, el framework no muestra CarUserSwitchingDialog.

Personaliza la pantalla de bloqueo

La pantalla de bloqueo es una parte integral de la IU del sistema, que el OEM puede personalizar. Para personalizar el flujo, comienza con frameworks/base/packages/CarSystemUI/.

Cómo personalizar la configuración de usuarios nuevos

El asistente de configuración realiza la configuración del usuario que ingresa por primera vez. Esto también se puede personalizar. Puedes usa el APIs de UserManager para crear un usuario. En algunos casos, esto se puede implementar en segundo plano, lo que simplifica el proceso del asistente de configuración.