Android Automotive bietet eine neue System-UI, die speziell für Fahrzeuge entwickelt wurde. Die meisten Komponenten der System-UI sind eng mit Framework-Diensten verknüpft. Die System-UI bezieht sich auf alle Elemente, die auf dem Display angezeigt werden und nicht zu einer App gehören. Die Automotive-System-UI (im Elementpaket „CarSystemUI“) ist eine Erweiterung der Android-System-UI (im Paket „System UI“), die speziell für Fahrzeuge angepasst wurde.
Was ist die System-UI?
Zu den Komponenten, die speziell für die Benutzeroberfläche des Infotainmentsystems entwickelt wurden, gehören:
Komponente | Beschreibung |
---|---|
Benutzeroberfläche des Sperrbildschirms | Bildschirm, über den Nutzer in einem bestimmten Nutzerkonto authentifiziert werden. |
Navigationsleiste | Die Systemleiste kann links, unten oder rechts auf dem Display platziert werden und kann Schaltflächen für die Navigation zu verschiedenen Apps, das Ein- und Ausschalten des Benachrichtigungsfelds sowie Fahrzeugsteuerungen (z. B. für die Klimaanlage) enthalten. Dies unterscheidet sich von der Android-System-UI-Implementierung, die die Schaltflächen „Zurück“, „Startbildschirm“ und „App-Stack“ bietet. |
Statusleiste | Eine Systemleiste, die sich über den Bildschirm erstreckt und als Navigationsleiste dient. Die Statusleiste bietet außerdem Funktionen für:
|
System-UI | Bezieht sich auf alle Elemente, die auf dem Bildschirm angezeigt werden und nicht zu einer App gehören. |
Benutzeroberfläche für die Nutzerauswahl | Bildschirm, auf dem ein Nutzer einen anderen Nutzer auswählen kann. |
Lautstärke-UI | Dialogfeld, das angezeigt wird, wenn der Fahrer die physischen Lautstärketasten auf einem Gerät verwendet, um die Lautstärke zu ändern. |
Wie funktioniert die System-UI?
Die System-UI ist eine Android-App, die ausgeführt wird, wenn ein Gerät eingeschaltet ist. Die App wird durch Reflection vom SystemServer gestartet. Die wichtigsten Einstiegspunkte für nutzersichtbare Aspekte der System-UI sind unten aufgeführt. Mit diesen Komponenten können Sie die Android-System-UI für fahrzeugspezifische Funktionen anpassen.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI ist eine Erweiterung des System UI-Pakets. Das bedeutet, dass Klassen und Ressourcen im System UI-Paket vom CarSystemUI-Paket verwendet und überschrieben werden können.
System-UI anpassen
Overlays
Sie können zwar den Android-Quellcode ändern, um die System-UI anzupassen, dies erschwert jedoch die Anwendung zukünftiger Android-Updates. Stattdessen unterstützt Android die Verwendung eines Overlay-Ordners, mit dem Sie Ressourcendateien ersetzen können, ohne den Quellcode zu ändern. Im Android-Build-System überschreibt das Overlay-System Dateien auf kontrollierte Weise. Alle geänderten Dateien werden klar identifiziert, ohne den gesamten AOSP-Quellcodebaum durchlaufen zu müssen.
Overlay-Dateien müssen sich im Verzeichnis PRODUCT_PACKAGE_OVERLAYS
befinden und genau dieselben Unterordner wie die ursprüngliche AOSP-Stammstruktur haben. Unter Android 10 oder höher ist PRODUCT_PACKAGE_OVERLAYS
auf Folgendes festgelegt:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
Die Automotive System UI verwendet Ressourcen aus den System UI- und CarSystemUI-Paketen. Das bedeutet, dass Ressourcen aus jedem Speicherort mit Overlays überschrieben werden können, um das Erscheinungsbild der Automotive System UI zu beeinflussen.
Wenn Sie eine Datei ersetzen möchten, replizieren Sie die Verzeichnisstruktur der zu ersetzenden Datei im von Ihnen angegebenen Verzeichnis /overlay
und fügen Sie die Ersatzdatei dann in dieses Verzeichnis ein. Beispiel: Ersetzen Sie
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Fügen Sie die Ersatzdatei super_status_bar.xml
an folgendem Speicherort hinzu:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Wenn Sie frameworks/base/packages/SystemUI/res/values/config.xml
ersetzen möchten (in der System-UI, nicht in CarSystemUI), fügen Sie die Ersatzdatei config.xml
an folgende Stelle ein:
packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/
oder
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Im Folgenden finden Sie Beschreibungen der beiden wichtigsten Einstiegspunkte für die Anpassung.
Navigationsleiste
Die Benutzeroberfläche des Infotainmentsystems kann drei Navigationsbalken links, unten und rechts auf dem Display haben. Die Sichtbarkeit der einzelnen Systemleisten kann mit den folgenden Konfigurationen aktiviert oder deaktiviert werden:
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
Jede Leiste hat einen bereitgestellten und einen nicht bereitgestellten Status, der durch Überlagern der entsprechenden Layoutdateien angepasst werden kann:
car_left_system_bar.xml
car_left_system_bar_unprovisioned.xml
car_system_bar.xml
(Layout für die untere Navigationsleiste)car_system_bar_unprovisioned.xml
car_right_system_bar.xml
car_right_system_bar_unprovisioned.xml
Diese Layouts müssen auf der obersten Ebene com.android.systemui.car.systembar.CarSystemBarView
enthalten, das alle anderen erforderlichen Ansichten enthalten kann. Schaltflächen in Navigationsleisten können mit com.android.systemui.car.systembar.CarSystemBarButton
eingefügt werden.
Diese Aufrufe werden in CarSystemBar#createSystemBar
erhöht, wenn das Gerät für einen bestimmten Nutzer ordnungsgemäß bereitgestellt ist.
Statusleiste
Betrachten Sie die Statusleiste als Navigationsleiste mit zusätzlichen Funktionen. Im Gegensatz zur Navigationsleiste kann die Statusleiste nicht deaktiviert werden. Sie können die Statusleiste mit folgenden Optionen anpassen:
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
Diese Layouts müssen auf der obersten Ebene com.android.systemui.statusbar.car.CarNavigationBarView
enthalten. Die Statusleiste enthält Statussymbole. Wenn Sie die Größe eines Symbols ändern möchten, skalieren Sie es gleichmäßig mit einem Skalierungsfaktor, anstatt eine bestimmte Größe anzugeben. Fügen Sie beispielsweise in einer Overlay-Datei /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
die folgenden Abmessungen hinzu, um die Größe der Symbole zu verdoppeln:
<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>
Die Statusleiste befindet sich in einer speziellen Fensterebene, die auch den Benachrichtigungsbereich, den Nutzerwechsel, die Heads-up-Benachrichtigungen (HUNs) und den Sperrbildschirm enthält. Die verschiedenen Layouts dafür sind in super_status_bar.xml
enthalten.
Änderungen am Quellcode der System-UI
Overlays bieten möglicherweise nicht die nötige Flexibilität, um das Verhalten der System-UI ausreichend anzupassen.
Benachrichtigung. Änderungen am Android-Quellcode sind in späteren Android-Releases nur schwer zu aktualisieren. Wir empfehlen Ihnen dringend, den Code der Benutzeroberfläche des Infotainmentsystems zu erweitern, anstatt ihn direkt zu ändern. So kann der zugrunde liegende Quellcode der Automotive System UI mit minimalen Zusammenführungskonflikten aktualisiert werden, da alle Anpassungen über bekannte API-Oberflächen implementiert werden.
Die meisten Aspekte der System-UI können über diese beiden Einstiegspunkte angepasst werden:
config_statusBarComponent
config_systemUIFactoryComponent
Wenn Sie beispielsweise eine Klasse namens com.android.systemui.statusbar.car.custom.CustomCarStatusBar
erstellen, die CarStatusBar
erweitert, aktualisieren Sie config_statusBarComponent
, damit sie auf diese neue Komponente verweist. Durch die Erweiterung dieser Klasse können die meisten Elemente angepasst werden, die sich auf die Systemleiste und die Benachrichtigungslogik beziehen.
Ebenso können Sie CustomCarSystemUIFactory
erstellen und in config_systemUIFactoryComponent
platzieren. Verwenden Sie diese Klasse, um die Funktionalität der VolumeUI und des Sperrbildschirms zu aktualisieren.
Nutzerwechsel und Entsperrung anpassen
Im Folgenden wird beschrieben, wie Sie die Nutzerwechselfunktion anpassen.
Begriff | Beschreibung |
---|---|
Keyguard | Vollbilddialogfeld, um versehentliche Interaktionen mit der App im Vordergrund zu verhindern. Schützt die Privatsphäre jedes Nutzers, wenn mehrere Nutzer eingerichtet sind. |
Dialogfeld zum Laden | Ladebildschirm, der beim Wechseln zwischen Nutzern angezeigt wird. |
Sperrbildschirm, Bouncer | Bildschirm, auf dem eine Person eine PIN, ein Muster oder ein Passwort eingeben muss |
Nutzer | Android-Nutzer |
Nutzerauswahl | Bildschirm für die Nutzerauswahl, der beim Starten eines Geräts angezeigt wird. |
Nutzerwechsel | Der Nutzerwechsel wird angezeigt, wenn Sie über die Schnelleinstellungen den Bildschirm wechseln. |
Nutzerwechsel anpassen
Keyguard und Bouncer
Unter Android Automotive OS wird der Keyguard-Bildschirm mit einer Nutzerauswahl nur angezeigt, wenn ein Nutzer auf dem Sperrbildschirm auf die Schaltfläche „Abbrechen“ klickt. Unten sehen Sie den Sperrbildschirm.
Abbildung 1. Keyguard-Bildschirm
Ein Sperrbildschirm mit einem Bouncer wird angezeigt, wenn der Nutzer einen Datenschutztyp ausgewählt hat, mit dem er das Gerät entsperren kann, wie unten dargestellt.
Abbildung 2. Sperrbildschirm.
Wenn das Schloss so eingestellt ist, dass es das Ein- und Ausschalten manuell auslöst, gehen Sie so vor:
adb shell input keyevent 26
Nutzerauswahl
Der Bildschirm für die Nutzerauswahl wird angezeigt, wenn ein Gerät neu gestartet wird, das zur Statusleiste der System-UI des Autos gehört und für Google Maps verwendet wird. Weitere Informationen finden Sie unter FullscreenUserSwitcher
.
Abbildung 3: Bildschirm mit Nutzerauswahl
Das Layout dieses Bildschirms kann in car_fullscreen_user_switcher.xml
angepasst werden.
Ladebildschirm
Der Ladebildschirm wird immer angezeigt, wenn der Nutzer gewechselt wird, unabhängig vom Einstiegspunkt. Beispielsweise über die Nutzerauswahl oder den Bildschirm „Einstellungen“. Der Ladebildschirm ist ein wesentlicher Bestandteil der System-UI des Frameworks und wird der öffentlichen Klasse CarUserSwitchingDialog
zugeordnet.
Abbildung 3 oben zeigt ein Beispiel.
Das Design kann mit der Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
angepasst werden.
Um den Android-Nutzer einzurichten, kann der Fahrer im ersten Einrichtungsassistenten einen Nutzernamen für sich festlegen. Wenn der Fahrer den Android-Nutzer dann mit einem Google-Konto verknüpft, wird der Nutzername aus diesem Konto ausgewählt. Wenn der Fahrer jedoch einen Namen angibt, z. B. „Fahrer B“, und diesen Nutzernamen später seinem Google-Konto mit dem Namen „Maddy“ zuordnet, wird der ursprünglich zugewiesene Name (Fahrer B) nicht geändert, da dieser Name explizit festgelegt wurde. Der Fahrer kann den Namen nur im Menü „Einstellungen“ ändern.
Das Layout kann in car_user_switching_dialog.xml.
angepasst werden.
OEMs können die Status- und Navigationsleiste mit dem Design namens NoActionBar.Fullscreen
ausblenden.
(Dies ist die ursprüngliche System-UI, die für die Referenz-UI des Autos aktualisiert wurde.) Weitere Informationen finden Sie unter Anpassung.
OEMs können zwar Eingangspunkte für die Benutzeroberfläche zum Wechseln des Nutzers bereitstellen, die Ergebnisse sind jedoch manchmal unerwünscht. In diesem Fall geschieht Folgendes:
- Der OEM erstellt und zeigt den benutzerdefinierten Ladebildschirm (oder Dialog) an.
- Spezifisch für die UX startet der OEM den benutzerdefinierten Ladebildschirm, wenn ein Nutzer die Methode für den Wechsel auswählt. Dieser kann ausgeblendet werden, wenn der Wechsel abgeschlossen ist.
- Der OEM muss das Prioritätsfenster nach seinen Wünschen festlegen. Beispielsweise ein Fenstertyp mit höherer Priorität. Die Priorität darf nicht höher sein als die des Keyguards.
- Der OEM legt
config_customUserSwitchUi=true
im Kernframeworkconfig.xml
fest, wie inconfig_customuserswitchui
beschrieben. Daher wirdCarUserSwitchingDialog
nicht im Framework angezeigt.
Sperrbildschirm anpassen
Der Sperrbildschirm ist ein wesentlicher Bestandteil der System-UI, der vom OEM angepasst werden kann.
Wenn Sie den Ablauf anpassen möchten, beginnen Sie mit frameworks/base/packages/CarSystemUI/
.
Ersteinrichtung für neue Nutzer anpassen
Der Einrichtungsassistent führt die Ersteinrichtung des Nutzers durch. Auch das kann angepasst werden. Sie können die UserManager APIs verwenden, um einen Nutzer zu erstellen. In einigen Fällen kann dies im Hintergrund implementiert werden, wodurch der Einrichtungsassistent optimiert wird.