Implémenter l'UI du système

Android Automotive fournit une nouvelle UI du système développée spécifiquement pour les véhicules. La plupart des composants de l'UI du système sont étroitement liés aux services de framework. L'UI du système fait référence à affiché à l'écran et qui ne fait pas partie d'une application. L'interface utilisateur d'Automotive System (dans les le package d'élément CarSystemUI) est une extension de l'UI du système Android (dans le package UI du système), spécialement conçu pour les véhicules.

Qu'est-ce que l'UI du système ?

Les composants spécifiques à l'UI Automotive System sont les suivants:

Component Description
Interface utilisateur de l'écran de verrouillage Écran via lequel les utilisateurs sont authentifiés auprès d'un compte utilisateur spécifique.
Barre de navigation Barre système qui peut être positionnée à gauche, en bas ou à droite de l'écran. Il peut inclure des boutons d'affichage permettant d'accéder à différentes applications, activer ou désactiver le panneau des notifications, fournir des commandes pour le véhicule (comme le système CVC). Cela diffère de l'UI du système Android qui fournit les boutons "Retour", "Accueil" et de pile d'applications.
Barre d'état Barre système positionnée le long de l'écran et servant de barre de navigation. La La barre d'état offre également les fonctionnalités suivantes:
  • Icônes de connectivité. Bluetooth, Wi-Fi et connexion au point d'accès/mobile.
  • Panneau de notification déroulant Par exemple, en balayant l'écran de haut en bas.
  • Notifications prioritaires
Interface Désigne tout élément affiché à l'écran qui ne fait pas partie d'une application.
Interface utilisateur du sélecteur d'utilisateurs Écran permettant à un utilisateur de sélectionner un autre utilisateur.
UI du volume Boîte de dialogue qui s'affiche lorsque le conducteur utilise les boutons de volume physiques pour régler le volume d'une appareil.

Comment fonctionne l'UI du système ?

L'UI du système est une application Android qui s'exécute lorsqu'un appareil est allumé. La l'application est lancée grâce à la réflexion SystemServer (Serveur système). Les points d'entrée les plus pertinents pour les aspects de l'UI du système visibles par l'utilisateur sont listés ci-dessous. Utilisez ces composants afin de personnaliser l'UI du système Android pour les fonctionnalités spécifiques à Automotive.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI est une extension du package UI du système, ce qui signifie que les classes et ressources du package UI du système peuvent être utilisées et remplacées par le package CarSystemUI.

Personnaliser l'UI du système

Superpositions

Bien que vous puissiez modifier le code source Android pour personnaliser l'UI du système, cela rend plus difficile et complexe l'application des futures mises à jour Android. Au lieu de cela, Android prend en charge l'utilisation d'un répertoire de superposition, ce qui vous permet de remplacer des fichiers de ressources sans modifier le code source. Dans le système de compilation Android, le système de superposition remplace les fichiers dans un de manière contrôlée. Tous les fichiers modifiés sont clairement identifiés sans qu'il soit nécessaire de parcourir la totalité du code source AOSP.

Les fichiers de superposition doivent être placés dans le répertoire PRODUCT_PACKAGE_OVERLAYS et doivent comporter exactement les mêmes sous-dossiers que la structure racine AOSP d'origine. Pour Android 10 ou ultérieure, PRODUCT_PACKAGE_OVERLAYS est défini sur:

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

L'UI d'Automotive System utilise les ressources de l'UI du système et des packages CarSystemUI. ce qui signifie que les ressources de chaque emplacement peuvent être remplacées par des superpositions de l'interface utilisateur d'Automotive System.

Pour remplacer un fichier, répliquez la structure de répertoires du fichier remplacé dans le le répertoire /overlay que vous avez spécifié, puis incluez le remplacement dans ce . Par exemple, pour remplacer:

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

Ajoutez le fichier super_status_bar.xml de remplacement situé dans:

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

Pour remplacer frameworks/base/packages/SystemUI/res/values/config.xml, (dans l'UI du système, et non dans CarSystemUI), ajoutez le fichier config.xml de remplacement à:

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

ou

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

Vous trouverez ci-dessous la description des deux principaux points d'entrée de la personnalisation.

L'interface utilisateur d'Automotive System peut comporter trois barres de navigation à gauche, en bas et à droite de l'écran. Vous pouvez activer/désactiver la visibilité de chaque barre système selon les configurations suivantes:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Chaque barre est associée à un état provisionné et non provisionné, que vous pouvez personnaliser en superposant le fichiers de mise en page respectifs:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (mise en page de la barre de navigation inférieure)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

Ces mises en page doivent contenir com.android.systemui.car.systembar.CarSystemBarView au niveau supérieur, ce qui peut inclure toute autre vue nécessaire. Les boutons à l'intérieur des barres de navigation peuvent être inclus en utilisant com.android.systemui.car.systembar.CarSystemBarButton

Ces vues sont gonflées dans CarSystemBar#createSystemBar, si l'appareil est correctement provisionné pour un utilisateur donné.

Barre d'état

Considérez la barre d'état comme une barre de navigation dotée de fonctionnalités supplémentaires. Contrairement à la navigation , la barre d'état n'a pas d'indicateur pour le désactiver. Vous pouvez modifier la barre d'état avec:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Ces mises en page doivent contenir com.android.systemui.statusbar.car.CarNavigationBarView au niveau supérieur. La barre d'état contient des icônes d'état. Pour modifier la taille d'une icône, mettez à l'échelle la de manière uniforme avec un facteur d'échelle au lieu de spécifier une taille spécifique. Par exemple, dans une superposition fichier /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml, ajoutez le suivantes pour doubler la taille des icônes:

<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 barre d'état se trouve dans une couche de fenêtrage spéciale qui inclut également le panneau des notifications, le sélecteur d’utilisateur, les notifications prioritaires (HUN) et le verrouillage du clavier. Les différentes mises en page correspondantes sont incluses super_status_bar.xml

Modifications du code source de l'UI du système

Les superpositions peuvent ne pas offrir la flexibilité nécessaire pour personnaliser suffisamment le comportement de l'UI du système.

Alerte. Les modifications apportées au code source Android sont difficiles à mettre à jour dans les versions ultérieures d'Android. Nous vous recommandons vivement d'étendre le code de l'UI d'Automotive System au lieu de modifier directement le code. De cette façon, le code source sous-jacent de l'UI d'Automotive System peuvent être mises à niveau avec un minimum de conflits de fusion, car toutes les personnalisations sont implémentées via surfaces d'API connues.

La plupart des aspects de l'interface utilisateur du système peuvent être personnalisés grâce aux deux points d'entrée suivants:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Par exemple, si vous créez une classe nommée com.android.systemui.statusbar.car.custom.CustomCarStatusBar, qui étend CarStatusBar, modifie config_statusBarComponent en point à ce nouveau composant. L'extension de cette classe permet de personnaliser la plupart des éléments relatifs à la barre système et à la logique des notifications.

De même, vous pouvez créer CustomCarSystemUIFactory et le placer dans config_systemUIFactoryComponent Utilisez cette classe pour mettre à jour la fonctionnalité VolumeUI et écran de verrouillage

Personnaliser le changement d'utilisateur et le déverrouillage

Le document suivant explique comment personnaliser l'expérience de changement d'utilisateur.

Terme Description
Protection des touches Boîte de dialogue en plein écran pour empêcher toute interaction accidentelle avec l'application au premier plan Protège la confidentialité de chaque utilisateur lorsque plusieurs utilisateurs sont configurés.
Chargement de la boîte de dialogue Écran de chargement qui s'affiche lorsque vous passez d'un utilisateur à un autre.
Écran de verrouillage, videur Écran demandant à une personne de saisir un code, un schéma ou un mot de passe.
Utilisateur Utilisateur Android.
Sélecteur d'utilisateur Écran de sélection de l'utilisateur affiché au démarrage d'un appareil.
Sélecteur d'utilisateurs Sélecteur d'utilisateur affiché lors du changement d'écran depuis les Réglages rapides.

Personnaliser le changement d'utilisateur

Protection du clavier et videur

Dans Android Automotive OS, l'écran "Protection du clavier" avec un sélecteur d'utilisateur s'affiche uniquement Lorsqu'un utilisateur clique sur le bouton "Annuler" de l'écran de verrouillage L'écran "Protection du clavier" est illustré ci-dessous.

Écran de verrouillage du clavier

Figure 1. Écran de verrouillage du clavier

Un écran de verrouillage avec un videur s'affiche lorsque l'utilisateur a sélectionné le type de confidentialité déverrouillez l'appareil, comme indiqué ci-dessous.

Écran de verrouillage

Figure 2 Écran de verrouillage.

Lorsque la serrure est configurée pour déclencher manuellement l'allumage ou l'arrêt, suivez les instructions ci-dessous:

adb shell input keyevent 26

Sélecteur d'utilisateur

L'écran de sélection de l'utilisateur s'affiche lorsqu'un appareil est intégré à la barre d'état de l'UI du système de la voiture et Maps redémarre. Pour en savoir plus, consultez FullscreenUserSwitcher

Écran de chargement

Figure 3. Écran de sélection de l'utilisateur

La mise en page de cet écran peut être personnalisée dans car_fullscreen_user_switcher.xml

Écran de chargement

L'écran de chargement s'affiche à chaque changement d'utilisateur, quel que soit le point d'entrée. Pour par exemple via le sélecteur d'utilisateur ou l'écran des paramètres. L'écran de chargement fait partie intégrante du framework et se mappe à la classe publique intitulée CarUserSwitchingDialog Reportez-vous à la Figure 3 ci-dessus pour obtenir un exemple.

Ce thème peut être personnalisé Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog

Pour configurer l'utilisateur Android, le flux initial de l'assistant de configuration permet au conducteur de configurer un utilisateur leur nom. Si le conducteur associe ensuite l'utilisateur Android à un compte Google, l'utilisateur est sélectionné à partir de ce compte. Toutefois, si le pilote spécifie un nom, par exemple DriverB, puis associe ce nom d'utilisateur à son compte Google au nom de Maddy, le nom attribué à l'origine (DriverB) n'est pas modifié, car il a été défini explicitement. Le conducteur ne peut changer le nom que dans le menu Paramètres.

La mise en page peut être personnalisée dans car_user_switching_dialog.xml.

Les OEM peuvent dissimuler l'état et la barre de navigation à l'aide du thème NoActionBar.Fullscreen (Il s'agit de l'UI d'origine du système, mise à jour pour l'UI de référence des voitures.) Pour en savoir plus, consultez Personnalisation.

Bien que les OEM puissent fournir des points d'entrée d'interface utilisateur pour changer d'utilisateur, les résultats peuvent parfois être ce qui n'est pas souhaitable. Si cela se produit:

  1. L'OEM crée et affiche l'écran de chargement (ou la boîte de dialogue) personnalisé.
    • Spécifique à l'expérience utilisateur, l'OEM lance l'écran de chargement personnalisé lorsqu'un utilisateur sélectionne les moyens de qui peut être dissimulé une fois le changement effectué.
    • L'OEM doit définir la priorité fenêtre en fonction de ses préférences. Par exemple, un type de fenêtre ayant une priorité plus élevée. Priorité la priorité ne peut pas dépasser celle de la protection du clavier.
  2. L'OEM définit config_customUserSwitchUi=true dans le framework de base. config.xml, comme décrit dans config_customuserswitchui. En tant que résultat, le framework n'affiche pas CarUserSwitchingDialog.

Personnaliser l'écran de verrouillage

L'écran de verrouillage fait partie intégrante de l'interface utilisateur du système, et il peut être personnalisé par l'OEM. Pour personnaliser le flux, commencez par frameworks/base/packages/CarSystemUI/.

Personnaliser la configuration pour les nouveaux utilisateurs

L'assistant de configuration effectue la configuration pour la première fois. Cette fonction est également personnalisable. Vous pouvez utilisez la API UserManager pour créer un utilisateur. Dans certains cas, cela peut être implémenté en arrière-plan, simplifiant ainsi le processus de l'assistant de configuration.