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: <ph type="x-smartling-placeholder">
|
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 indiqué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.
Barre de navigation
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 éviter 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.
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.
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
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 pour eux-mêmes. 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:
- 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.
- L'OEM définit
config_customUserSwitchUi=true
dans le framework de base.config.xml
, comme décrit dansconfig_customuserswitchui
. En tant que résultat, 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, 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.