Android Automotive proporciona una nueva interfaz de usuario del sistema desarrollada específicamente para vehículos. La mayoría de los componentes de la interfaz de usuario del sistema están estrechamente relacionados con los servicios del marco. La interfaz de usuario del sistema se refiere a cualquier elemento que se muestra en la pantalla que no forma parte de una aplicación. La interfaz de usuario del sistema automotriz (en el paquete de elementos CarSystemUI) es una extensión de la interfaz de usuario del sistema Android (en el paquete SystemUI), que se ha personalizado específicamente para vehículos.
¿Qué es la interfaz de usuario del sistema?
Los componentes específicos de la interfaz de usuario del sistema automotriz incluyen:
Componente | Descripción |
---|---|
Interfaz de usuario de la 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 | Barra del sistema que se puede colocar a la izquierda, en la parte inferior o a la derecha de la pantalla y que puede incluir botones de faceta para navegar a diferentes aplicaciones, alternar el panel de notificaciones y proporcionar controles del vehículo (como HVAC). Esto difiere de la implementación de la interfaz de usuario del sistema Android, que proporciona los botones Atrás, Inicio y pila de aplicaciones. |
Barra de estado | Barra de sistema posicionada a lo largo de la pantalla y que sirve como barra de navegación. La barra de estado también proporciona funcionalidad para admitir:
|
Interfaz de usuario del sistema | Hace referencia a cualquier elemento que se muestra en la pantalla que no forma parte de una aplicación. |
Interfaz de usuario del conmutador de usuario | Pantalla a través de la cual un usuario puede seleccionar un usuario diferente. |
Interfaz de usuario de volumen | Cuadro de diálogo que se muestra cuando el controlador usa botones de volumen físicos para cambiar el volumen en un dispositivo. |
¿Cómo funciona la interfaz de usuario del sistema?
La interfaz de usuario del sistema es una aplicación de Android que se ejecuta cuando se enciende un dispositivo. La aplicación se inicia a través de la reflexión del SystemServer . Los puntos de entrada más relevantes para los aspectos visibles para el usuario de la interfaz de usuario del sistema se enumeran a continuación. Utilice estos componentes para personalizar la interfaz de usuario del sistema Android para capacidades específicas de Automoción.
-
config_statusBarComponent
-
config_systemUIFactoryComponent
CarSystemUI es una extensión del paquete SystemUI, lo que significa que el paquete CarSystemUI puede usar y anular las clases y los recursos del paquete SystemUI.
Personalización de la interfaz de usuario del sistema
superposiciones
Si bien puede modificar el código fuente de Android para personalizar la interfaz de usuario del sistema, hacerlo hace que sea más difícil y complejo aplicar futuras actualizaciones de Android. En su lugar, Android admite el uso de un directorio superpuesto, lo que le 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 forma controlada. Todos los archivos modificados se identifican claramente sin atravesar todo el á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 de AOSP. Para Android 10 o superior, PRODUCT_PACKAGE_OVERLAYS
se establece en:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
La interfaz de usuario del sistema automotriz usa recursos de SystemUI y los paquetes CarSystemUI, lo que significa que los recursos de cada ubicación se pueden anular con superposiciones para afectar la apariencia de la interfaz de usuario del sistema automotriz.
Para reemplazar un archivo, replique la estructura de directorios del archivo que se está reemplazando en el directorio /overlay
que especificó y luego incluya el reemplazo en ese directorio. Por ejemplo, para reemplazar:
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Agregue el archivo super_status_bar.xml
de reemplazo ubicado en:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Para reemplazar frameworks/base/packages/SystemUI/res/values/config.xml
(en SystemUI, no en CarSystemUI), agregue el archivo config.xml
de reemplazo a:
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 de personalización principales.
Barra de navegación
La interfaz de usuario del sistema automotriz puede tener tres barras de navegación a la izquierda, abajo y a la derecha de la pantalla. La visibilidad de cada barra del sistema se alterna con las siguientes configuraciones:
-
config_enableLeftSystemBar
-
config_enableBottomSystemBar
-
config_enableRightSystemBar
Cada barra tiene un estado aprovisionado y no aprovisionado, que se puede personalizar superponiendo los archivos de diseño respectivos:
-
car_left_system_bar.xml
-
car_left_system_bar_unprovisioned.xml
-
car_system_bar.xml
(diseño para 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 mediante com.android.systemui.car.systembar.CarSystemBarButton
.
Estas vistas se inflan en CarSystemBar#createSystemBar
, si el dispositivo está correctamente aprovisionado para un usuario determinado.
Barra de estado
Considere la barra de estado como una barra de navegación con funciones adicionales. A diferencia de la barra de navegación, la barra de estado no tiene una bandera para desactivarla. Puede modificar la barra de estado con:
-
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 iconos de estado. Para cambiar el tamaño de un icono, escale el icono uniformemente con un factor de escala en lugar de especificar un tamaño específico. Por ejemplo, en un archivo de superposición /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
, agregue 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 reside en una capa de ventana especial que también incluye el panel de notificaciones, el conmutador de usuario, las notificaciones de alerta (HUN) y el protector de teclado. Los diversos diseños para estos se incluyen en super_status_bar.xml
.
Cambios en el código fuente de la interfaz de usuario del sistema
Es posible que las superposiciones no proporcionen la flexibilidad necesaria para personalizar suficientemente el comportamiento de la interfaz de usuario del sistema.
Alerta. Los cambios realizados en el código fuente de Android serán difíciles de actualizar en versiones posteriores de Android. Se recomienda enfáticamente que amplíe el código de la interfaz de usuario del sistema automotriz en lugar de modificarlo directamente. De esta manera, el código fuente de la interfaz de usuario del sistema automotriz subyacente se puede actualizar con conflictos de combinación mínimos, ya que todas las personalizaciones se implementan a través de superficies de API conocidas.
La mayoría de los aspectos de la interfaz de usuario del sistema se pueden personalizar a través de estos dos puntos de entrada:
-
config_statusBarComponent
-
config_systemUIFactoryComponent
Por ejemplo, si crea una clase denominada com.android.systemui.statusbar.car.custom.CustomCarStatusBar
, que amplía CarStatusBar
, actualice config_statusBarComponent
para que apunte a este nuevo componente. La extensión de esta clase permite la personalización de la mayoría de los elementos que pertenecen a la barra del sistema y la lógica de notificaciones.
Del mismo modo, puede crear CustomCarSystemUIFactory
y colocarlo en config_systemUIFactoryComponent
. Use esta clase para actualizar la funcionalidad de VolumeUI y la pantalla de bloqueo.
Personaliza el cambio y desbloqueo de usuarios
El siguiente material describe cómo personalizar la experiencia de cambio de usuario.
Término | Descripción |
---|---|
Protector de teclado | Diálogo de pantalla completa para evitar la interacción accidental con la aplicación en primer plano. Protege la privacidad de cada usuario cuando se configuran varios usuarios. |
Cuadro de diálogo de carga | Se muestra la pantalla de carga al cambiar de usuario. |
Pantalla de bloqueo, gorila | Pantalla que requiere que una persona ingrese un PIN, patrón o contraseña. |
Usuario | Usuario de Android. |
Selector de usuarios | Pantalla de selección de usuario que se muestra cuando se inicia un dispositivo. |
Conmutador de usuario | El conmutador de usuario se muestra al cambiar de pantalla desde QuickSettings. |
Personalizar el cambio de usuario
Keyguard y gorila
En el sistema operativo Android Automotive, la pantalla Keyguard con un selector de usuario se muestra solo cuando un usuario hace clic en el botón Cancelar en la pantalla de bloqueo. La pantalla Keyguard se muestra a continuación.
Figura 1. Pantalla de bloqueo de teclas
Se muestra una pantalla de bloqueo con un gorila cuando el usuario ha seleccionado un tipo de privacidad con el que desbloquear el dispositivo, como se muestra a continuación.
Figura 2. Pantalla de bloqueo.
Cuando la cerradura está configurada para activar o desactivar manualmente la alimentación, utilice las siguientes instrucciones:
adb shell input keyevent 26
Selector de usuarios
La pantalla Selector de usuario se muestra cuando se reinicia un dispositivo integrado en la barra de estado de la interfaz de usuario del sistema del automóvil y Maps. Para obtener más información, consulte FullscreenUserSwitcher
.
Figura 3. Pantalla de carga
El diseño de esta pantalla se puede personalizar en car_fullscreen_user_switcher.xml
.
Cargando pantalla
La pantalla de carga se muestra cada vez que se cambia un usuario, independientemente del punto de entrada. Por ejemplo, a través del Selector de usuarios o la pantalla Configuración. La pantalla de carga es parte integral de la interfaz de usuario del sistema del marco y se asigna a la clase pública titulada CarUserSwitchingDialog
. Consulte la Figura 3 anterior para ver un ejemplo.
El tema se puede personalizar con Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
.
Para configurar el usuario de Android, el flujo inicial del asistente de configuración permite al conductor configurar un nombre de usuario para sí mismo. Si el controlador luego asocia el usuario de Android con una cuenta de Google, el nombre de usuario se selecciona de esa cuenta. Sin embargo, si el conductor especifica un nombre, por ejemplo DriverB, y luego asocia ese nombre de usuario a su cuenta de Google con el nombre de Maddy, el nombre asignado originalmente (DriverB) no cambia porque ese nombre 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 la barra de estado y navegación mediante el tema denominado NoActionBar.Fullscreen
. (Esta es la interfaz de usuario del sistema original, actualizada para la interfaz de usuario de referencia del automóvil). Para obtener más información, consulte Personalización .
Si bien los OEM pueden proporcionar puntos de entrada de la interfaz de usuario para cambiar de usuario, los resultados a veces pueden ser indeseables. Si esto ocurre:
- El OEM crea y muestra la pantalla (o diálogo) de carga personalizada.
- Específico para el UX, el OEM inicia la pantalla de carga personalizada cuando un usuario selecciona los medios para cambiar, que se puede ocultar cuando se completa el cambio de usuario.
- El OEM debe establecer la ventana de prioridad según sus preferencias. Por ejemplo, un tipo de ventana de mayor prioridad. La prioridad de prioridad no puede exceder la del Keyguard.
- El OEM establece
config_customUserSwitchUi=true
en el marco principalconfig.xml
como se describe enconfig_customuserswitchui
. Como resultado, el marco no muestraCarUserSwitchingDialog
.
Personaliza la pantalla de bloqueo
La pantalla de bloqueo es una parte integral de la interfaz de usuario del sistema, que el OEM puede personalizar. Para personalizar el flujo, comience con frameworks/base/packages/CarSystemUI/
.
Personalizar la configuración del usuario por primera vez
El asistente de configuración realiza la configuración del usuario por primera vez. Esto también se puede personalizar. Puede utilizar las API de UserManager para crear un usuario. En algunos casos, esto se puede implementar en segundo plano, lo que agiliza el proceso del asistente de configuración.