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:
|
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.
Barra di navigazione
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.
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.
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
.
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:
- 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.
- L'OEM imposta
config_customUserSwitchUi=true
nel framework di baseconfig.xml
come descritto inconfig_customuserswitchui
. Come il framework non mostraCarUserSwitchingDialog
.
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.