Android Automotive udostępnia nowy interfejs systemowy opracowany specjalnie na potrzeby pojazdów. Większość komponentów interfejsu użytkownika jest ściśle powiązana z usługami frameworka. UI systemu to dowolny element wyświetlany na ekranie, który nie jest częścią aplikacji. UI systemu Automotive (w pakiecie CarSystemUI) to rozszerzenie interfejsu systemu Android (w pakiecie SystemUI), które zostało dostosowane specjalnie do pojazdów.
Czym jest interfejs systemu?
Komponenty specyficzne dla interfejsu Automotive System:
Komponent | Opis |
---|---|
Interfejs ekranu blokady | Ekran, na którym użytkownicy są uwierzytelniani na konkretnym koncie użytkownika. |
Pasek nawigacyjny | pasek systemowy, który może znajdować się po lewej, prawej lub na dole ekranu i może zawierać przyciski elementów do nawigacji do różnych aplikacji, przełączać panel powiadomień oraz zapewniać sterowanie pojazdem (np. HVAC); Różni się to od implementacji interfejsu systemu Androida, która zawiera przyciski Wstecz, Ekran główny i stos aplikacji. |
Pasek stanu | Systemowy pasek umieszczony na ekranie, który pełni funkcję paska nawigacyjnego. Pasek stanu umożliwia też:
|
Interfejs systemu | Odnosi się do dowolnego elementu wyświetlanego na ekranie, który nie jest częścią aplikacji. |
Interfejs przełącznika użytkownika | Ekran, na którym użytkownik może wybrać innego użytkownika. |
Interfejs Volume | Okno wyświetlane, gdy kierowca używa fizycznych przycisków głośności, aby zmienić głośność na urządzeniu. |
Jak działa interfejs systemowy?
Interfejs systemu to aplikacja na Androida, która działa, gdy urządzenie jest włączone. Aplikacja jest uruchamiana przez SystemServer za pomocą funkcji odbicia lustrzanego. Poniżej znajdziesz najważniejsze punkty wejścia do widocznych dla użytkownika elementów interfejsu systemu. Używaj tych komponentów, aby dostosować interfejs systemu Androida do potrzeb samochodów.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI jest rozszerzeniem pakietu SystemUI, co oznacza, że klasy i zasoby w pakiecie SystemUI mogą być używane i zastępowane przez pakiet CarSystemUI.
Dostosowywanie interfejsu systemu
Nakładki
Możesz zmodyfikować kod źródłowy Androida, aby dostosować interfejs systemu, ale utrudni to i skomplikuje stosowanie przyszłych aktualizacji Androida. Zamiast tego Android umożliwia używanie katalogu nakładki, który umożliwia zastępowanie plików zasobów bez modyfikowania kodu źródłowego. W systemie kompilacji Androida system nakładek zastępuje pliki w kontrolowany sposób. Wszystkie zmodyfikowane pliki są wyraźnie oznaczone bez konieczności przeglądania całego drzewa kodu źródłowego AOSP.
Pliki nakładki muszą znajdować się w katalogu PRODUCT_PACKAGE_OVERLAYS
i mieć dokładnie te same podfoldery co oryginalna struktura główna AOSP. W przypadku Androida w wersji 10 lub nowszej wartość PRODUCT_PACKAGE_OVERLAYS
ma wartość:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
System multimedialny Automotive System UI korzysta z zasobów z pakietów System UI i CarSystemUI, co oznacza, że zasoby z każdej lokalizacji można zastąpić nakładkami, aby wpływać na wygląd i działanie systemu multimedialnego Automotive System UI.
Aby zastąpić plik, skopiuj strukturę katalogu zastępowanego pliku w wybranym katalogu /overlay
, a następnie dodaj do niego plik zastępczy. Na przykład, aby zastąpić:
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Dodaj plik super_status_bar.xml
, który znajduje się w folderze:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Aby zastąpić frameworks/base/packages/SystemUI/res/values/config.xml
(w System UI, nie CarSystemUI), dodaj plik config.xml
do:
packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/
lub
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Poniżej opisujemy 2 główne punkty wejścia do tworzenia niestandardowych wersji.
Pasek nawigacyjny
Interfejs systemu samochodowego może mieć 3 paski nawigacyjne po lewej, dole i prawej stronie ekranu. Widoczność każdego paska systemu można włączać i wyłączać za pomocą tych konfiguracji:
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
Każda poprzeczka ma stan „zarezerwowany” i „niezarezerwowany”, który można dostosować, nakładając odpowiednie pliki układu:
car_left_system_bar.xml
car_left_system_bar_unprovisioned.xml
car_system_bar.xml
(układ dolnego paska nawigacyjnego)car_system_bar_unprovisioned.xml
car_right_system_bar.xml
car_right_system_bar_unprovisioned.xml
Te układy muszą zawierać element com.android.systemui.car.systembar.CarSystemBarView
na najwyższym poziomie, który może zawierać dowolne inne widoki. Przyciski na pasku nawigacyjnym można dodać za pomocą elementu com.android.systemui.car.systembar.CarSystemBarButton
.
Te wyświetlenia są zawyżane w , jeśli urządzenie jest prawidłowo skonfigurowane dla danego użytkownika.CarSystemBar#createSystemBar
Pasek postępu
Pasek stanu można traktować jako pasek nawigacji z dodatkowymi funkcjami. W odróżnieniu od paska nawigacyjnego pasek stanu nie ma flagi umożliwiającej jego wyłączenie. Pasek stanu możesz modyfikować za pomocą:
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
Te układy muszą zawierać element com.android.systemui.statusbar.car.CarNavigationBarView
na najwyższym poziomie. Pasek stanu zawiera ikony stanu. Aby zmienić rozmiar ikony, skaluj ją równomiernie za pomocą współczynnika skalowania zamiast podawania konkretnego rozmiaru. Na przykład w pliku /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
z nakładką dodaj te wymiary, aby podwoić rozmiar ikon:
<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>
Pasek stanu znajduje się w specjalnej warstwie okna, która obejmuje także panel powiadomień, przełącznik użytkownika, powiadomienia typu heads-up (HUN) oraz ekran blokady. Różne układy tych elementów są dostępne w pliku super_status_bar.xml
.
Zmiany w kodzie źródłowym interfejsu systemu
Nakładki mogą nie zapewniać elastyczności potrzebnej do odpowiedniego dostosowania działania interfejsu systemu.
Alert. Zmiany wprowadzone w kodzie źródłowym Androida są trudne do aktualizacji w późniejszych wersjach Androida. Zdecydowanie zalecamy rozszerzanie kodu interfejsu Automotive System UI zamiast bezpośredniej modyfikacji kodu. Dzięki temu podstawowy kod źródłowy interfejsu użytkownika Automotive System można uaktualnić z minimalną liczbą konfliktów podczas scalania, ponieważ wszystkie dostosowywanie są implementowane za pomocą znanych interfejsów API.
Większość aspektów interfejsu systemu można dostosować za pomocą tych 2 punktów wejścia:
config_statusBarComponent
config_systemUIFactoryComponent
Jeśli np. utworzysz klasę o nazwie com.android.systemui.statusbar.car.custom.CustomCarStatusBar
, która rozszerza klasę CarStatusBar
, zaktualizuj element config_statusBarComponent
, aby wskazywał na ten nowy komponent. Rozszerzenie tej klasy umożliwia dostosowywanie większości elementów związanych z paskiem systemowym i logiką powiadomień.
Podobnie możesz utworzyć CustomCarSystemUIFactory
i umieścić go w config_systemUIFactoryComponent
. Użyj tej klasy, aby zaktualizować funkcjonalność VolumeUI i ekranu blokady.
Dostosowywanie przełączania i odblokowywania użytkowników
Z tego materiału dowiesz się, jak dostosować przełączanie kont.
Termin | Opis |
---|---|
Blokada klawiszy | Okno dialogowe na pełnym ekranie, aby zapobiec przypadkowemu interakcji z aplikacją na pierwszym planie. Chroni prywatność każdego użytkownika, gdy skonfigurowanych jest wielu użytkowników. |
Wczytuję okno | Ekran wczytywania wyświetlany podczas przełączania się między użytkownikami. |
Ekran blokady, bouncer | Ekran wymagający wpisania kodu PIN, wzoru lub hasła. |
Użytkownik | Użytkownik Androida. |
Selektor użytkowników | Ekran wyboru użytkownika wyświetlany po uruchomieniu urządzenia. |
Przełącznik użytkownika | Przełącznik użytkownika wyświetlany podczas przełączania ekranów z szybkich ustawień. |
Dostosowywanie przełączania użytkowników
Keyguard i bouncer
W systemie operacyjnym Android Automotive ekran Keyguard z wybierakiem użytkowników wyświetla się tylko, gdy użytkownik kliknie przycisk Anuluj na ekranie blokady. Poniżej widać ekran Keyguard.
Rysunek 1. Ekran blokady klawiszy
Gdy użytkownik wybierze typ ochrony prywatności, który ma służyć do odblokowywania urządzenia, wyświetli się ekran blokady z bouncerem, jak pokazano poniżej.
Rysunek 2. Ekran blokady.
Jeśli blokada jest ustawiona tak, aby ręcznie włączać i wyłączać zasilanie, postępuj zgodnie z tymi instrukcjami:
adb shell input keyevent 26
Selektor użytkowników
Wyświetla się on, gdy urządzenie, które jest integralną częścią paska stanu interfejsu użytkownika systemu, i Mapy są ponownie uruchamiane. Więcej informacji znajdziesz w artykule FullscreenUserSwitcher
.
Rysunek 3. Ekran wyboru użytkownika
Układ tego ekranu można dostosować w aplikacji car_fullscreen_user_switcher.xml
.
Wczytuję ekran
Ekran wczytywania wyświetla się zawsze, gdy użytkownik przełączy się na inny profil, niezależnie od punktu wejścia. na przykład za pomocą selektora użytkowników lub ekranu Ustawienia. Ekran wczytywania jest integralną częścią interfejsu systemu framework i odpowiada klasie publicznej o nazwie CarUserSwitchingDialog
.
Przykład znajdziesz na rysunku 3 powyżej.
Motyw można dostosować za pomocą Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
.
Aby skonfigurować konto użytkownika Androida, w ramach początkowego procesu konfiguracji kierowca może ustawić swoją nazwę użytkownika. Jeśli kierowca powiąże użytkownika Androida z kontem Google, z tego konta zostanie wybrana nazwa użytkownika. Jeśli jednak kierowca podaje nazwę, np. KierowcaB, a potem skojarzy ją z kontem Google o nazwie Maddy, pierwotnie przypisana nazwa (KierowcaB) nie zostanie zmieniona, ponieważ została ustawiona w sposób jawny. Kierowca może zmienić nazwę tylko w menu Ustawienia.
Układ można dostosować w aplikacji car_user_switching_dialog.xml.
Producenci OEM mogą ukryć pasek stanu i pasek nawigacji, używając motywu o nazwie NoActionBar.Fullscreen
.
(To oryginalny interfejs systemu, zaktualizowany pod kątem interfejsu referencyjnego samochodu). Więcej informacji znajdziesz w artykule o personalizacji.
Producenci OEM mogą udostępniać punkty wejścia w interfejsie, które umożliwiają przełączanie użytkowników, ale czasami może to przynieść niepożądane skutki. W takim przypadku:
- Producent OEM tworzy i wyświetla niestandardowy ekran wczytywania (lub okno dialogowe).
- W przypadku interfejsu OEM uruchamia niestandardowy ekran wczytywania, gdy użytkownik wybierze sposób przełączenia, który można ukryć po zakończeniu przełączania.
- Producent OEM musi ustawić okno priorytetowe zgodnie ze swoimi preferencjami. Na przykład typ okna o wyższym priorytecie. Priorytet nie może przekraczać priorytetu Keyguard.
- Producent OEM ustawia
config_customUserSwitchUi=true
w ramach podstawowejconfig.xml
zgodnie z opisem w dokumentacjiconfig_customuserswitchui
. W rezultacie framework nie wyświetlaCarUserSwitchingDialog
.
Dostosowywanie ekranu blokady
Ekran blokady jest integralną częścią interfejsu systemu, który może być dostosowywany przez producenta OEM.
Aby dostosować proces, zacznij od frameworks/base/packages/CarSystemUI/
.
Dostosowywanie konfiguracji dla nowego użytkownika
Kreator konfiguracji przeprowadza konfigurację pierwszego użytkownika. Tę funkcję też można dostosować. Aby utworzyć użytkownika, możesz użyć interfejsów UserManager API. W niektórych przypadkach można to zrobić w tle, co usprawnia działanie kreatora konfiguracji.