System-UI implementieren

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. die 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:
  • Verbindungssymbole Einschließlich Bluetooth, WLAN und Hotspot-/Mobilfunkverbindung.
  • Benachrichtigungsleiste herunterziehen. Sie können beispielsweise vom oberen Displayrand nach unten wischen.
  • Vorabbenachrichtigungen (HUN).
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 zu installieren. 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 unter folgendem Pfad 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.

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, wenn das Gerät für einen bestimmten Nutzer ordnungsgemäß bereitgestellt wird.

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 den 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.

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.

Sperrbildschirm

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

Ladebildschirm

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:

  1. 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.
  2. Der OEM legt config_customUserSwitchUi=true im Kern-Framework fest. config.xml, wie unter config_customuserswitchui beschrieben. Als führt, zeigt das Framework nicht CarUserSwitchingDialog 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.