Android Automotive fournit une nouvelle interface utilisateur système développée spécifiquement pour les véhicules. La plupart des composants de l'interface utilisateur système sont étroitement liés aux services de l'infrastructure. L'interface utilisateur du système fait référence à tout élément affiché à l'écran qui ne fait pas partie d'une application. L'interface utilisateur du système automobile (dans le package d'éléments CarSystemUI) est une extension de l'interface utilisateur du système Android (dans le package SystemUI), qui a été personnalisée spécifiquement pour les véhicules.
Qu'est-ce que l'interface utilisateur système ?
Les composants spécifiques à l'interface utilisateur du système automobile incluent :
Composant | La description |
---|---|
Interface utilisateur de l'écran de verrouillage | Écran par lequel les utilisateurs sont authentifiés à un compte d'utilisateur spécifique. |
Barre de navigation | Barre système qui peut être positionnée à gauche, en bas ou à droite de l'écran et qui peut inclure des boutons de facette pour naviguer vers différentes applications, basculer le panneau de notification et fournir des commandes de véhicule (telles que HVAC). Cela diffère de l'implémentation de l'interface utilisateur du système Android, qui fournit les boutons Retour, Accueil et Pile d'applications. |
Barre d'état | Barre système positionnée le long de l'écran et qui sert de barre de navigation. La barre d'état fournit également des fonctionnalités pour prendre en charge :
|
Interface utilisateur du système | Fait référence à tout élément affiché à l'écran qui ne fait pas partie d'une application. |
Interface utilisateur du sélecteur d'utilisateurs | Écran à travers lequel un utilisateur peut sélectionner un autre utilisateur. |
Interface utilisateur du volume | Boîte de dialogue affichée lorsque le pilote utilise les boutons de volume physiques pour modifier le volume sur un périphérique. |
Comment fonctionne l'interface utilisateur système ?
L'interface utilisateur système est une application Android qui s'exécute lorsqu'un appareil est sous tension. L'application est démarrée par réflexion par le SystemServer . Les points d'entrée les plus pertinents pour les aspects visibles par l'utilisateur de l'interface utilisateur système sont répertoriés ci-dessous. Utilisez ces composants pour personnaliser l'interface utilisateur du système Android pour les fonctionnalités spécifiques à l'automobile.
-
config_statusBarComponent
-
config_systemUIFactoryComponent
CarSystemUI est une extension du package SystemUI, ce qui signifie que les classes et les ressources du package SystemUI peuvent être utilisées et remplacées par le package CarSystemUI.
Personnalisation de l'interface utilisateur du système
Superpositions
Bien que vous puissiez modifier le code source Android pour personnaliser l'interface utilisateur 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, qui vous permet de remplacer les fichiers de ressources sans modifier le code source. Dans le système de construction Android, le système de superposition remplace les fichiers de manière contrôlée. Tous les fichiers modifiés sont clairement identifiés sans parcourir toute l'arborescence du code source AOSP.
Les fichiers de superposition doivent être placés dans le répertoire PRODUCT_PACKAGE_OVERLAYS
et doivent avoir exactement les mêmes sous-dossiers que la structure racine AOSP d'origine. Pour Android 10 ou version ultérieure, PRODUCT_PACKAGE_OVERLAYS
est défini sur :
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
L'interface utilisateur du système automobile utilise les ressources de SystemUI et des packages CarSystemUI, ce qui signifie que les ressources de chaque emplacement peuvent être remplacées par des superpositions pour affecter l'apparence de l'interface utilisateur du système automobile.
Pour remplacer un fichier, répliquez la structure de répertoire du fichier remplacé dans le répertoire /overlay
que vous avez spécifié, puis incluez le remplacement dans ce répertoire. Par exemple, pour remplacer :
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Ajoutez le fichier de remplacement super_status_bar.xml
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 SystemUI, pas CarSystemUI), ajoutez le fichier de remplacement config.xml
à :
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/
Les descriptions des deux principaux points d'entrée de personnalisation sont fournies ci-dessous.
Barre de navigation
L'interface utilisateur du système automobile peut avoir trois barres de navigation à gauche, en bas et à droite de l'écran. La visibilité de chaque barre système est basculée avec les configurations suivantes :
-
config_enableLeftSystemBar
-
config_enableBottomSystemBar
-
config_enableRightSystemBar
Chaque barre a un état provisionné et non provisionné, qui peut être personnalisé en superposant les fichiers de mise en page respectifs :
-
car_left_system_bar.xml
-
car_left_system_bar_unprovisioned.xml
-
car_system_bar.xml
(disposition pour 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, qui peut inclure toutes les autres vues nécessaires. Les boutons à l'intérieur des barres de navigation peuvent être inclus à l'aide de 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 avec des fonctionnalités supplémentaires. Contrairement à la barre de navigation, la barre d'état n'a pas d'indicateur pour la 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, redimensionnez l'icône uniformément avec un facteur d'échelle au lieu de spécifier une taille spécifique. Par exemple, dans un fichier de superposition /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
, ajoutez les dimensions 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 réside dans une couche de fenêtrage spéciale qui comprend également le panneau de notifications, le sélecteur d'utilisateur, les notifications tête haute (HUN) et le protège-clavier. Les différentes mises en page pour ceux-ci sont incluses dans super_status_bar.xml
.
Modifications du code source de l'interface utilisateur système
Les superpositions peuvent ne pas offrir la flexibilité nécessaire pour personnaliser suffisamment le comportement de l'interface utilisateur système.
Alerte. Les modifications apportées au code source d'Android seront difficiles à mettre à jour dans les versions ultérieures d'Android. Il est fortement recommandé d'étendre le code de l'interface utilisateur du système automobile au lieu de modifier directement le code. De cette façon, le code source sous-jacent de l'interface utilisateur du système automobile peut être mis à niveau avec un minimum de conflits de fusion puisque toutes les personnalisations sont implémentées via des surfaces d'API connues.
La plupart des aspects de l'interface utilisateur système peuvent être personnalisés via ces deux points d'entrée :
-
config_statusBarComponent
-
config_systemUIFactoryComponent
Par exemple, si vous créez une classe nommée com.android.systemui.statusbar.car.custom.CustomCarStatusBar
, qui étend CarStatusBar
, mettez à jour config_statusBarComponent
pour pointer vers ce nouveau composant. L'extension de cette classe permet la personnalisation de 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 les fonctionnalités de VolumeUI et lockscreen.
Personnalisez le changement d'utilisateur et le déverrouillage
Le matériel suivant décrit comment personnaliser l'expérience de changement d'utilisateur.
Terme | La description |
---|---|
Protège-clé | Boîte de dialogue plein écran pour éviter toute interaction accidentelle avec l'application de premier plan. Protège la confidentialité de chaque utilisateur lorsque plusieurs utilisateurs sont configurés. |
Boîte de dialogue de chargement | Écran de chargement affiché lors du passage d'un utilisateur à l'autre. |
Écran de verrouillage, videur | Écran demandant à une personne de saisir un code PIN, un schéma ou un mot de passe. |
Utilisateur | Utilisateur Android. |
Sélecteur d'utilisateur | Écran de sélection d'utilisateur affiché lors du démarrage d'un périphérique. |
Sélecteur d'utilisateur | Sélecteur d'utilisateur affiché lors du changement d'écran depuis QuickSettings. |
Personnaliser le changement d'utilisateur
Keyguard et videur
Dans Android Automotive OS, l'écran Keyguard avec un sélecteur d'utilisateur s'affiche uniquement lorsqu'un utilisateur clique sur le bouton Annuler sur l'écran de verrouillage. L'écran Keyguard est illustré ci-dessous.
Figure 1. Écran de protection du clavier
Un écran de verrouillage avec un videur s'affiche lorsque l'utilisateur a sélectionné un type de confidentialité avec lequel déverrouiller l'appareil, comme indiqué ci-dessous.
Figure 2. Écran de verrouillage.
Lorsque le verrou est réglé pour déclencher manuellement la mise sous tension ou hors tension, suivez les instructions suivantes :
adb shell input keyevent 26
Sélecteur d'utilisateur
L'écran User Picker s'affiche lorsqu'un appareil intégré à la barre d'état de l'interface utilisateur système de la voiture et à Maps est redémarré. Pour en savoir plus, consultez FullscreenUserSwitcher
.
Figure 3. Écran de chargement
La disposition de cet écran peut être personnalisée dans car_fullscreen_user_switcher.xml
.
Écran de chargement
L'écran de chargement s'affiche chaque fois qu'un utilisateur est changé, quel que soit le point d'entrée. Par exemple, via le sélecteur d'utilisateurs ou l'écran Paramètres. L'écran de chargement fait partie intégrante de l'interface utilisateur du système et correspond à la classe publique intitulée CarUserSwitchingDialog
. Voir la figure 3 ci-dessus pour un exemple.
Le thème peut être personnalisé avec le 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 nom d'utilisateur pour lui-même. Si le conducteur associe ensuite l'utilisateur Android à un compte Google, le nom d'utilisateur est sélectionné à partir de ce compte. Toutefois, si le conducteur spécifie un nom, par exemple DriverB, puis associe ultérieurement ce nom d'utilisateur à son compte Google avec le nom de Maddy, le nom attribué à l'origine (DriverB) n'est pas modifié car ce nom a été explicitement défini. Le conducteur ne peut modifier 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 masquer la barre d'état et de navigation en utilisant le thème nommé NoActionBar.Fullscreen
. (Il s'agit de l'interface utilisateur système d'origine, mise à jour pour l'interface utilisateur de référence de la voiture.) Pour plus d'informations, voir Personnalisation .
Alors que les OEM peuvent fournir des points d'entrée d'interface utilisateur pour changer d'utilisateur, les résultats peuvent parfois être indésirables. Si cela devait arriver :
- L'OEM crée et affiche l'écran de chargement personnalisé (ou la boîte de dialogue).
- Spécifique à l'UX, l'OEM lance l'écran de chargement personnalisé lorsqu'un utilisateur sélectionne le moyen de basculer, qui peut être masqué lorsque le changement d'utilisateur est terminé.
- L'OEM doit définir la fenêtre de priorité en fonction de ses préférences. Par exemple, un type de fenêtre de priorité plus élevée. La priorité prioritaire ne peut pas dépasser celle du Keyguard.
- L'OEM définit
config_customUserSwitchUi=true
dans le framework principalconfig.xml
comme décrit dansconfig_customuserswitchui
. Par conséquent, le framework n'affiche pasCarUserSwitchingDialog
.
Personnaliser l'écran de verrouillage
L'écran de verrouillage fait partie intégrante de l'interface utilisateur du système, qui peut être personnalisé par l'OEM. Pour personnaliser le flux, commencez par frameworks/base/packages/CarSystemUI/
.
Personnaliser la configuration de l'utilisateur pour la première fois
L'assistant de configuration effectue la première configuration de l'utilisateur. Cela aussi peut être personnalisé. Vous pouvez utiliser les API UserManager pour créer un utilisateur. Dans certains cas, cela peut être implémenté en arrière-plan, ce qui simplifie le processus de l'assistant de configuration.