Implementare l'UI di sistema

Android Automotive offre una nuova UI di sistema sviluppata appositamente per i veicoli. La maggior parte dei componenti dell'interfaccia utente di sistema sono strettamente associati a servizi di framework. Con UI di sistema si intende qualsiasi visualizzato sullo schermo che non fa parte di un'app. L'interfaccia utente del sistema Automotive (nel pacchetto di elementi CarSystemUI) è un'estensione dell'interfaccia utente di sistema Android (nel pacchetto UI di sistema), che è stato personalizzato appositamente per i veicoli.

Che cos'è l'UI di sistema?

I componenti specifici dell'interfaccia utente del sistema automobilistico includono:

Componente Descrizione
UI della schermata di blocco Schermata attraverso la quale gli utenti vengono autenticati in un account utente specifico.
Barra di navigazione Barra di sistema che può essere posizionata a sinistra, in basso o a destra dello schermo e che puoi includere pulsanti facet per navigare in diverse app, attivare/disattivare il riquadro delle notifiche e fornire controlli del veicolo (come l'impianto di climatizzazione). È diverso dall'UI del sistema Android implementazione, che fornisce i pulsanti Indietro, Home e stack di app.
Barra di stato Barra di sistema posizionata lungo lo schermo che funge da barra di navigazione. La la barra di stato offre inoltre funzionalità per supportare:
  • Icone della connettività. Sono incluse la connessione Bluetooth, Wi-Fi e hotspot/mobile.
  • Riquadro delle notifiche a discesa. Ad esempio, scorri verso il basso dalla parte superiore dello schermo.
  • Notifiche avvisi (HUN).
UI di sistema Indica qualsiasi elemento visualizzato sullo schermo che non fa parte di un'app.
UI del selettore di utenti Schermata tramite la quale un utente può selezionare un altro utente.
UI del volume Finestra di dialogo visualizzata quando il conducente utilizza pulsanti fisici del volume per regolare il volume di una dispositivo.

Come funziona l'UI di sistema?

L'UI di sistema è un'app per Android che viene eseguita quando il dispositivo è acceso. La viene avviata attraverso la riflessione SystemServer. Di seguito sono elencati i punti di ingresso più pertinenti per gli aspetti visibili all'utente dell'UI di sistema. Utilizza questi componenti per personalizzare l'interfaccia utente del sistema Android per funzionalità specifiche per Automotive.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI è un'estensione del pacchetto della UI di sistema, il che significa che classi e risorse nel pacchetto dell'UI di sistema possono essere utilizzate e sostituite dal pacchetto CarSystemUI.

Personalizzare l'UI di sistema

Overlay

Puoi modificare il codice sorgente di Android per personalizzare l'UI di sistema, Ciò rende più difficile e complessa l'applicazione dei futuri aggiornamenti di Android. Invece, Android supporta l'uso di una directory overlay, che consente di sostituire i file di risorse senza modifica del codice sorgente. Nel sistema di compilazione Android, il sistema di overlay sostituisce i file in un in modo controllato. Tutti i file modificati vengono identificati chiaramente senza attraversare l'intero ad albero del codice sorgente AOSP.

I file di overlay devono essere posizionati nella directory PRODUCT_PACKAGE_OVERLAYS e devono avere esattamente le stesse sottocartelle della struttura principale di AOSP originale. Per Android 10 o successiva, PRODUCT_PACKAGE_OVERLAYS è impostato su:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

La UI del sistema Automotive utilizza risorse dell'UI di sistema e dei pacchetti CarSystemUI, Ciò significa che le risorse di ogni località possono essere sostituite con overlay per influire aspetto e design dell'interfaccia utente del sistema automobilistico.

Per sostituire un file, replica la struttura di directory del file da sostituire nel /overlay directory che hai specificato, quindi includi la sostituzione al suo interno . Ad esempio, per sostituire:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

Aggiungi il file super_status_bar.xml sostitutivo che si trova in:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

Per sostituire frameworks/base/packages/SystemUI/res/values/config.xml, (nell'UI di sistema, non in CarSystemUI), aggiungi il file config.xml sostitutivo a:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

o

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

Di seguito sono riportate le descrizioni dei due punti di ingresso principali della personalizzazione.

L'interfaccia utente del sistema Automotive può avere tre barre di navigazione a sinistra, in basso e a destra del schermo. La visibilità di ogni barra di sistema viene attivata/disattivata con le seguenti configurazioni:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Ogni barra ha uno stato "provisioning" e "non eseguito" che può essere personalizzato sovrapponendo la barra rispettivi file di layout:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (layout per la barra di navigazione in basso)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

Questi layout devono contenere com.android.systemui.car.systembar.CarSystemBarView al livello superiore, il che può includere eventuali altre viste necessarie. I pulsanti all'interno delle barre di navigazione possono essere inclusi utilizzando com.android.systemui.car.systembar.CarSystemBarButton.

Queste visualizzazioni sono aumentate in modo artificioso nel mese di CarSystemBar#createSystemBar, se il provisioning del dispositivo è stato eseguito correttamente per un determinato utente.

Barra di stato

Considera la barra di stato come una barra di navigazione con funzionalità aggiuntive. Annulla il Mi piace barra di stato, la barra di stato non ha un flag per disattivarla. Puoi modificare la barra di stato con:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Questi layout devono contenere com.android.systemui.statusbar.car.CarNavigationBarView al livello più alto. La barra di stato contiene icone di stato. Per modificare le dimensioni di un'icona, ridimensiona in modo uniforme con un fattore di scala invece di specificare una dimensione specifica. Ad esempio, in un overlay file /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml, aggiungi seguenti dimensioni per raddoppiare le dimensioni delle icone:

<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 barra di stato si trova in uno speciale livello di windowing che include anche il riquadro delle notifiche, il selettore degli utenti, le notifiche in evidenza (HUN) e il keypad. I vari layout per questi modelli sono inclusi super_status_bar.xml.

Modifiche al codice sorgente dell'interfaccia utente di sistema

Gli overlay potrebbero non fornire la flessibilità necessaria per personalizzare sufficientemente il comportamento dell'interfaccia utente di sistema.

Avviso. Le modifiche apportate al codice sorgente di Android sono difficili da aggiornare nelle release successive di Android. Ti consigliamo vivamente di estendere il codice UI di Automotive System anziché modificare direttamente il codice. In questo modo, il codice sorgente sottostante dell'UI di Automotive System l'upgrade può essere eseguito con conflitti di unione minimi perché tutte le personalizzazioni vengono implementate piattaforme API note.

Gran parte degli aspetti dell'interfaccia utente di sistema può essere personalizzata tramite questi due punti di ingresso:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Ad esempio, se crei una classe denominata com.android.systemui.statusbar.car.custom.CustomCarStatusBar, che estende CarStatusBar, aggiorna config_statusBarComponent al punto a questo nuovo componente. L'estensione di questa classe consente la personalizzazione della maggior parte degli elementi alla barra di sistema e alla logica delle notifiche.

Allo stesso modo, puoi creare CustomCarSystemUIFactory e inserirlo in config_systemUIFactoryComponent. Utilizza questa classe per aggiornare la funzionalità VolumeUI e schermata di blocco.

Personalizza il passaggio e lo sblocco degli utenti

Il seguente materiale descrive come personalizzare l'esperienza di passaggio dell'utente.

Termine Descrizione
Keyguard Finestra di dialogo a schermo intero per impedire l'interazione accidentale con l'app in primo piano. Protegge la privacy di ogni utente quando sono configurati più utenti.
Caricamento finestra di dialogo in corso... Schermata di caricamento visualizzata quando si passa da un utente all'altro.
Schermata di blocco, buttafuori Schermata che richiede l'inserimento di un PIN, una sequenza o una password.
Utente Utente Android.
Selettore utente Schermata del selettore utenti visualizzata all'avvio del dispositivo.
Selettore utente Selettore utente visualizzato quando si cambia schermata da Impostazioni rapide.

Personalizza il passaggio tra utenti

Keyguard e buttafuori

In Android Automotive OS, la schermata Keyguard con un selettore utente viene mostrata solo Quando un utente fa clic sul pulsante Annulla sulla schermata di blocco. Di seguito è visualizzata la schermata Keyguard.

Schermata blocco tastiera

Figura 1. Schermata di blocco della tastiera

Una schermata di blocco con un buttafuori viene visualizzata quando l'utente ha selezionato un tipo di privacy con cui sblocca il dispositivo, come mostrato di seguito.

Schermata di blocco

Figura 2. Schermata di blocco.

Quando il blocco è impostato per attivare o disattivare manualmente l'accensione o lo spegnimento, segui queste istruzioni:

adb shell input keyevent 26

Selettore utente

La schermata del selettore dell'utente viene visualizzata quando un dispositivo è integrato nella barra di stato dell'interfaccia utente di sistema dell'auto. e Maps viene riavviato. Per saperne di più, vedi FullscreenUserSwitcher.

Schermata di caricamento

Figura 3. Schermata di selezione utenti

Il layout di questa schermata può essere personalizzato car_fullscreen_user_switcher.xml.

Schermata di caricamento

La schermata di caricamento viene visualizzata ogni volta che un utente viene cambiato, indipendentemente dal punto di accesso. Per ad esempio mediante il selettore utenti o la schermata Impostazioni. La schermata di caricamento è parte integrante del di sistema UI di sistema e le mappe alla classe pubblica denominata CarUserSwitchingDialog. Vedi la Figura 3 sopra per un esempio.

Il tema può essere personalizzato con Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog.

Per configurare l'utente Android, il flusso iniziale della configurazione guidata consente al conducente di configurare il loro nome. Se il conducente associa l'utente Android a un Account Google, l'utente sia selezionato dall'account. Tuttavia, se il driver specifica un nome, ad esempio "DriverB", e successivamente associa quel nome utente al proprio Account Google con il nome di Maddy, la il nome assegnato inizialmente (DriverB) non viene modificato perché è stato impostato in modo esplicito. Il conducente puoi modificare il nome solo nel menu Impostazioni.

Il layout può essere personalizzato in car_user_switching_dialog.xml.

Gli OEM possono nascondere la barra di stato e di navigazione utilizzando il tema denominato NoActionBar.Fullscreen. Questa è l'UI di sistema originale, aggiornata per la UI di riferimento dell'auto. Per ulteriori informazioni, vedi Personalizzazione.

Sebbene gli OEM possano fornire punti di ingresso all'interfaccia utente per cambiare utente, a volte i risultati possono essere indesiderato. In questo caso:

  1. L'OEM crea e mostra la schermata di caricamento (o la finestra di dialogo) personalizzata.
    • Specifica per la UX, l'OEM lancia la schermata di caricamento personalizzata quando un utente seleziona i mezzi per che può essere nascosta una volta completato il passaggio.
    • L'OEM deve impostare la priorità finestra in base alle preferenze. Ad esempio, un tipo di finestra con priorità più alta. Priorità la priorità non può superare quella di Keyguard.
  2. L'OEM imposta config_customUserSwitchUi=true nel framework di base config.xml come descritto in config_customuserswitchui. Come il framework non mostra CarUserSwitchingDialog.

Personalizzare la schermata di blocco

La schermata di blocco è parte integrante dell'UI di sistema, che può essere personalizzata dall'OEM. Per personalizzare il flusso, inizia con frameworks/base/packages/CarSystemUI/.

Personalizza la configurazione iniziale

La configurazione guidata esegue la prima configurazione dell'utente. Anche questo può essere personalizzato. Puoi utilizza la API UserManager per creare un utente. In alcuni casi, questa soluzione può essere implementata in background, semplificando il processo di configurazione guidata.