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:
|
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.
Barra de navegació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.
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.
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
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:
- 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.
- El OEM establece
config_customUserSwitchUi=true
en el framework principal.config.xml
como se describe enconfig_customuserswitchui
. Como Como resultado, el framework no muestraCarUserSwitchingDialog
.
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.