Android Automotive bietet eine neue System-UI, die speziell für Fahrzeuge entwickelt wurde. Die meisten Komponenten der System-UI eng mit Framework-Diensten verknüpft sind. System-UI bezieht sich auf -Element, das auf dem Bildschirm angezeigt wird und nicht Teil einer App ist. Die Automotive System-UI (im CarSystemUI-Elementpaket) ist eine Erweiterung der Android-System-UI aus dem System UI-Paket. das speziell auf Fahrzeuge zugeschnitten ist.
Was ist die System-UI?
Zu den spezifischen Komponenten der Automotive System-UI gehören:
Komponente | Beschreibung |
---|---|
Sperrbildschirm-UI | Bildschirm, durch den Nutzer bei einem bestimmten Nutzerkonto authentifiziert werden. |
Navigationsleiste | Systemleiste, die links, unten oder rechts auf dem Bildschirm positioniert werden kann Facettenschaltflächen zur Navigation zu verschiedenen Apps, zum Ein-/Ausschalten der Benachrichtigungsleiste und Fahrzeugsteuerungen (z. B. HLK) bereitstellen. Dies unterscheidet sich von der Android-System-UI. Implementierung, die die Schaltflächen „Zurück“, „Startseite“ und „App-Stapel“ umfasst. |
Statusleiste | Systemleiste, die auf dem Bildschirm positioniert und als Navigationsleiste dient. Die
Die Statusleiste bietet unter anderem folgende Funktionen: <ph type="x-smartling-placeholder">
|
System-UI | Bezieht sich auf jedes auf dem Bildschirm angezeigte Element, das nicht Teil einer App ist. |
Benutzeroberfläche zum Nutzerwechsel | Bildschirm, über den ein Nutzer einen anderen Nutzer auswählen kann. |
Volume-UI | Dialogfeld, das angezeigt wird, wenn der Fahrer mit physischen Lautstärketasten die Lautstärke eines Geräts ändert . |
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 Reflexion des SystemServer: Die relevantesten Einstiegspunkte für für den Nutzer sichtbare Aspekte der System-UI sind unten aufgeführt. Verwenden Sie diese Komponenten, um die Android-System-UI für Automotive-spezifische Funktionen anzupassen.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI ist eine Erweiterung des System UI-Pakets. Das bedeutet, dass Klassen und Ressourcen im System-UI-Paket können vom CarSystemUI-Paket verwendet und überschrieben werden.
System-UI anpassen
Overlays
Sie können zwar den Android-Quellcode ändern, um die System-UI anzupassen, Dadurch wird es schwieriger und komplizierter, zukünftige Android-Updates anzuwenden. Stattdessen wird Android unterstützt die Verwendung eines Overlay-Verzeichnisses, mit dem Sie Ressourcendateien ersetzen können, ohne Änderungen am Quellcode vornehmen. Im Android-Build-System überschreibt das Overlay-System Dateien in einem kontrolliert haben. Alle geänderten Dateien sind klar identifiziert, ohne den gesamten Struktur des AOSP-Quellcodes.
Overlay-Dateien müssen im Verzeichnis PRODUCT_PACKAGE_OVERLAYS
abgelegt werden und Folgendes enthalten:
genau dieselben Unterordner wie die ursprüngliche AOSP-Stammstruktur. Für 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 der System-UI und den CarSystemUI-Paketen. Das bedeutet, dass Ressourcen von jedem Standort mit Overlays überschrieben werden können, um die Erscheinungsbild der Automotive System-UI.
Replizieren Sie zum Ersetzen einer Datei die Verzeichnisstruktur der zu ersetzenden Datei im
/overlay
-Verzeichnis und fügen Sie dann die Ersetzung in dieses Verzeichnis ein
-Verzeichnis. Ersetzen Sie beispielsweise:
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Fügen Sie die super_status_bar.xml
-Ersatzdatei hinzu, die sich hier befindet:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Um frameworks/base/packages/SystemUI/res/values/config.xml
zu ersetzen,
Fügen Sie die Ersatzdatei config.xml
in der System-UI, nicht in CarSystemUI, hinzu:
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 primären Einstiegspunkte für die Anpassung.
Navigationsleiste
Die Automotive System-Benutzeroberfläche kann drei Navigationsleisten auf der linken, unteren und rechten Seite der Bildschirm. Die Sichtbarkeit der einzelnen Systemleisten ist mit den folgenden Konfigurationen umgeschaltet:
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
Jeder Balken hat den Status „Bereitgestellt“ und „Nicht bereitgestellt“, die Sie anpassen können, indem Sie entsprechende Layoutdateien:
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
com.android.systemui.car.systembar.CarSystemBarView
auf oberster Ebene erstellen,
alle erforderlichen Ansichten enthalten. Schaltflächen innerhalb der Navigationsleisten können mithilfe von
com.android.systemui.car.systembar.CarSystemBarButton
Diese Aufrufe sind in CarSystemBar#createSystemBar
überhöht,
Ob das Gerät für einen bestimmten Nutzer ordnungsgemäß bereitgestellt wurde
Statusleiste
Betrachten Sie die Statusleiste als Navigationsleiste mit zusätzlichen Funktionen. Anders als bei der Navigation gibt es in der Statusleiste kein Flag, um sie zu deaktivieren. Sie können die Statusleiste wie folgt ändern:
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
Diese Layouts müssen com.android.systemui.statusbar.car.CarNavigationBarView
enthalten
auf oberster Ebene. Die Statusleiste enthält Statussymbole. Um die Größe eines Symbols zu ändern,
einheitlich mit einem Skalierungsfaktor, anstatt eine bestimmte Größe anzugeben. Zum Beispiel in einem Overlay,
Datei /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
, fügen Sie den
folgenden Maßen ein, 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 Windowing-Ebene, die auch
die Benachrichtigungsleiste, die Nutzerauswahl, Heads-up-Benachrichtigungen (HUNs) und
Keyguard. Die verschiedenen Layouts dafür sind in
super_status_bar.xml
Änderungen am Quellcode der System-UI
Overlays bieten möglicherweise nicht die nötige Flexibilität, um das Verhalten der System-UI ausreichend anzupassen.
Achtung. Am Android-Quellcode vorgenommene Änderungen sind schwierig zu aktualisieren in späteren Android-Versionen. Wir empfehlen dringend, den Automotive System-UI-Code zu erweitern anstatt den Code direkt zu ändern. Auf diese Weise wird der zugrunde liegende Quellcode der Automotive System-UI mit minimalen Zusammenführungskonflikten aktualisiert werden, da alle Anpassungen über bekannten API-Oberflächen.
Die meisten Aspekte der System-UI können über diese beiden Einstiegspunkte angepasst werden:
config_statusBarComponent
config_systemUIFactoryComponent
Wenn Sie z. B. eine Klasse mit dem Namen
com.android.systemui.statusbar.car.custom.CustomCarStatusBar
, die
erweitert CarStatusBar
, config_statusBarComponent
bis Punkt aktualisieren
auf diese neue Komponente. Durch das Erweitern dieser Klasse können die meisten der Elemente
und die Benachrichtigungslogik.
Ebenso können Sie CustomCarSystemUIFactory
erstellen und in folgendem Ordner platzieren:
config_systemUIFactoryComponent
. Mit dieser Klasse können Sie die Funktionalität der
VolumeUI und Sperrbildschirm
Nutzerwechsel und Entsperren anpassen
Im Folgenden wird beschrieben, wie Sie den Nutzerwechsel individuell anpassen können.
Begriff | Beschreibung |
---|---|
Keyguard | Vollbilddialogfeld, um eine versehentliche Interaktion mit der App im Vordergrund zu verhindern. Schützt die Daten aller Nutzer, wenn mehrere Nutzer eingerichtet sind. |
Dialogfeld wird geladen | Ladebildschirm, der beim Wechseln zwischen Nutzern angezeigt wird. |
Sperrbildschirm, Türsteher | 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. |
Nutzerauswahl | Nutzerauswahl, die angezeigt wird, wenn von den Schnelleinstellungen zu einem anderen Bildschirm gewechselt wird. |
Nutzerwechsel anpassen
Keyguard und Türsteher
In Android Automotive OS wird nur der Keyguard-Bildschirm mit einer Nutzerauswahl angezeigt. Ein Nutzer klickt auf dem Sperrbildschirm auf die Schaltfläche „Abbrechen“. Unten sehen Sie den Keyguard-Bildschirm.
Abbildung 1. Keyguard-Bildschirm
Ein Sperrbildschirm mit einem Unzustellbarkeitsposten wird angezeigt, wenn der Nutzer einen Datenschutztyp ausgewählt hat, entsperren Sie das Gerät wie unten gezeigt.
Abbildung 2. Sperrbildschirm.
Wenn das Schloss so eingestellt ist, dass das Gerät ein- oder ausgeschaltet wird, gehen Sie so vor:
adb shell input keyevent 26
Nutzerauswahl
Der Bildschirm für die Nutzerauswahl wird angezeigt, wenn ein Gerät, das in die Statusleiste der System-UI des Autos integriert ist,
und Google Maps wird neu gestartet. Weitere Informationen finden Sie unter
FullscreenUserSwitcher
Abbildung 3: Bildschirm für die Nutzerauswahl
Das Layout dieses Bildschirms kann angepasst werden in
car_fullscreen_user_switcher.xml
Ladebildschirm
Der Ladebildschirm wird immer dann angezeigt, wenn ein Nutzer unabhängig vom Einstiegspunkt gewechselt wird. Für
z. B. über die Nutzerauswahl oder den Bildschirm „Einstellungen“. Der Ladebildschirm ist ein wichtiger Bestandteil
Framework-System-UI und verweist auf die öffentliche Klasse mit dem Titel
CarUserSwitchingDialog
Ein Beispiel finden Sie in Abbildung 3 oben.
Das Design kann mithilfe der
Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
Für die Einrichtung des Android-Nutzers wird dem Treiber durch den anfänglichen Einrichtungsassistenten ermöglicht, einen Nutzer einzurichten. einen eigenen Namen geben. Wenn der Fahrer den Android-Nutzer mit einem Google-Konto verknüpft, Kontonamen ausgewählt. Wenn der Treiber jedoch einen Namen angibt, z. B. DriverB, und verknüpft diesen Nutzernamen später mit ihrem Google-Konto mit dem Namen Maddy, dem Der ursprünglich zugewiesene Name (TreiberB) wird nicht geändert, da dieser Name explizit festgelegt wurde. Der Fahrer kann den Namen nur im Menü „Einstellungen“ ändern.
Layout kann in car_user_switching_dialog.xml.
angepasst werden
OEMs können den Status und die Navigationsleiste verbergen, indem sie das Design
NoActionBar.Fullscreen
(Dies ist die ursprüngliche System-UI, die für die Referenz-UI des Autos aktualisiert wurde.) Weitere Informationen finden Sie unter
Anpassung:
Während OEMs Benutzeroberflächen Einstiegspunkte für Wechselbenutzer bereitstellen können, unerwünscht sind. Sollte dieser Fall eintreten:
- Der OEM erstellt und zeigt den benutzerdefinierten Ladebildschirm (oder -dialog) an.
- UX-spezifisch startet der OEM den benutzerdefinierten Ladebildschirm, wenn Nutzende die Mittel zum , der verborgen werden kann, wenn der Nutzerwechsel abgeschlossen ist.
- Der OEM muss die Priorität je nach Bedarf anpassen. Dies kann beispielsweise ein Fenstertyp mit höherer Priorität sein. Priorität Priorität darf nicht die des Keyguard überschreiten.
- Der OEM legt
config_customUserSwitchUi=true
im Kern-Framework fest.config.xml
, wie unterconfig_customuserswitchui
beschrieben. Als führt, zeigt das Framework nichtCarUserSwitchingDialog
an.
Sperrbildschirm anpassen
Der Sperrbildschirm ist ein wesentlicher Bestandteil der System-UI und kann vom OEM angepasst werden.
Beginnen Sie mit frameworks/base/packages/CarSystemUI/
, um den Ablauf anzupassen.
Einrichtung für Erstnutzer anpassen
Der Einrichtungsassistent führt die erstmalige Nutzereinrichtung durch. Auch dieser kann angepasst werden. Sie können verwenden Sie die UserManager-APIs um einen Nutzer zu erstellen. In einigen Fällen kann dies im Hintergrund implementiert werden, den Einrichtungsassistenten.