Implementacja interfejsu systemu

Android Automotive ma nowy interfejs systemu stworzony specjalnie z myślą o pojazdach. Większość komponentów interfejsu systemu są ściśle połączone z usługami platformy. Interfejs systemu odnosi się do: element wyświetlany na ekranie, który nie jest częścią aplikacji. Interfejs systemu samochodowego (w interfejsie CarSystemUI) to rozszerzenie interfejsu systemu Android (w pakiecie elementów interfejsu systemu). który został dostosowany specjalnie do pojazdów.

Co to jest interfejs systemu?

Komponenty w interfejsie systemu samochodowego to między innymi:

Komponent Opis
Interfejs ekranu blokady Ekran, za pomocą którego użytkownicy są uwierzytelniani na określonym koncie użytkownika.
Pasek nawigacyjny Pasek systemowy, który możesz umieścić z lewej, dolnej lub prawej strony ekranu. mogą zawierać przyciski aspektów umożliwiające nawigację do różnych aplikacji, przełączanie panelu powiadomień oraz dostarczać elementów sterujących pojazdu (np. systemu ogrzewania/wentylacji/klimatyzacji). Różni się to od interfejsu systemu Android W tym celu pojawiły się przyciski Wstecz, Strona główna i Stos aplikacji.
Pasek stanu Pasek systemowy umieszczony wzdłuż ekranu, który pełni funkcję paska nawigacyjnego. Pasek stanu zapewnia też obsługę:
  • Ikony połączeń. W tym Bluetooth, Wi-Fi oraz połączenie z hotspotem/siecią komórkową.
  • Rozwijany panel powiadomień. Na przykład przesuń palcem z góry ekranu w dół.
  • Powiadomienia z ostrzeżeniem (HUN).
Interfejs systemu Odnosi się do dowolnego elementu wyświetlanego na ekranie, który nie jest częścią aplikacji.
Interfejs użytkownika do przełączania użytkowników Ekran, za pomocą którego użytkownik może wybrać innego użytkownika.
Interfejs woluminu Okno wyświetlane, gdy kierowca używa fizycznych przycisków głośności do zmiany głośności na urządzenia.

Jak działa interfejs systemu?

Interfejs systemu to aplikacja na Androida uruchamiana, gdy urządzenie jest włączone. jest uruchamiana przez refleksję Serwer systemu. Poniżej znajdziesz najważniejsze punkty wejścia w widoczne dla użytkowników aspekty interfejsu systemu. Za pomocą tych komponentów możesz dostosować interfejs systemu Android pod kątem funkcji związanych z samochodami.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI jest rozszerzeniem pakietu interfejsu systemu. Oznacza to, że klasy i zasobów z pakietu UI systemu można używać i zastępować przez pakiet CarSystemUI.

Dostosowywanie interfejsu systemu

Nakładki

Możesz zmodyfikować kod źródłowy Androida, aby dostosować interfejs systemu, komplikuje to stosowanie przyszłych aktualizacji Androida. Zamiast tego Android umożliwia korzystanie z katalogu nakładki, który pozwala zastąpić pliki zasobów bez na modyfikowaniu kodu źródłowego. W systemie kompilacji Androida system nakładek zastępuje pliki w w sposób kontrolowany. Wszystkie zmodyfikowane pliki są wyraźnie oznaczone bez konieczności przechodzenia przez cały drzewo kodu źródłowego AOSP.

Pliki obrazów nad powierzchnią muszą znajdować się w katalogu PRODUCT_PACKAGE_OVERLAYS i muszą mieć dokładnie te same podfoldery co pierwotna struktura główna AOSP. Na urządzeniu z Androidem 10 lub więcej, PRODUCT_PACKAGE_OVERLAYS ma wartość:

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

Interfejs systemu motoryzacyjnego korzysta z zasobów interfejsu systemu oraz pakietów CarSystemUI, co oznacza, że zasoby z każdej lokalizacji można zastąpić nakładkami, które wpływają wygląd i sposób obsługi interfejsu systemu samochodowego.

Aby zastąpić plik, w sekcji w określonym przez siebie katalogu /overlay, a następnie umieść w nim zamiennik katalogu. Aby na przykład zastąpić:

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

Dodaj zastępczy plik super_status_bar.xml znajdujący się w:

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

Aby zastąpić interfejs frameworks/base/packages/SystemUI/res/values/config.xml, (w interfejsie systemu, nie CarSystemUI) dodaj zastępczy 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 znajdziesz opisy 2 głównych punktów wejścia dostosowania.

Interfejs systemu samochodowego może mieć 3 paski nawigacyjne po lewej, dolnej i prawej stronie ekranu. Widoczność każdego paska systemowego jest przełączana w tych konfiguracjach:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Każdy słupek ma stan udostępniony i nieudostępniony, który można dostosować, nakładając na siebie 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ć com.android.systemui.car.systembar.CarSystemBarView na najwyższym poziomie, które mogą nie uwzględnia innych koniecznych widoków. Przyciski na paskach nawigacyjnych można dodać za pomocą com.android.systemui.car.systembar.CarSystemBarButton

Liczba ta jest zwiększona w CarSystemBar#createSystemBar, czy urządzenie jest prawidłowo obsługiwane przez danego użytkownika.

Pasek postępu

Potraktuj pasek stanu jak pasek nawigacyjny z dodatkowymi funkcjami. W przeciwieństwie do nawigacji pasek stanu nie zawiera flagi do jego wyłączenia. Pasek stanu możesz modyfikować za pomocą:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Te układy muszą zawierać com.android.systemui.statusbar.car.CarNavigationBarView na najwyższym poziomie. Na pasku stanu znajdują się ikony stanu. Aby zmienić rozmiar ikony, przeskaluj jednolicie z odpowiednim współczynnikiem skali, zamiast określać konkretny rozmiar. Na przykład w nakładce /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml, dodaj następujące 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 okien, która zawiera też panel powiadomień, przełącznik użytkowników, powiadomienia HUD lub funkcję zabezpieczenia. Różne układy tego typu są uwzględnione w super_status_bar.xml

Zmiany kodu źródłowego w interfejsie systemu

Nakładki mogą nie zapewniać elastyczności niezbędnej do odpowiedniego dostosowania działania interfejsu systemu.

Uwaga. Zmiany wprowadzone w kodzie źródłowym Androida są trudne do aktualizacji w nowszych wersjach Androida. Zdecydowanie zalecamy rozszerzenie kodu interfejsu systemu samochodowego zamiast modyfikować kod bezpośrednio. Dzięki temu podstawowy kod źródłowy w interfejsie systemu samochodowego można uaktualnić z minimalną liczbą konfliktów scalania, ponieważ wszystkie dostosowania są na znanych platformach API.

Większość elementów interfejsu systemu można dostosować za pomocą tych 2 punktów:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Jeśli na przykład utworzysz klasę o nazwie com.android.systemui.statusbar.car.custom.CustomCarStatusBar, która rozszerza: CarStatusBar, zaktualizuj config_statusBarComponent do punktu do tego nowego komponentu. Rozszerzenie tej klasy umożliwia dostosowanie większości elementów dotyczących do paska systemowego i systemu logicznego powiadomień.

W podobny sposób możesz utworzyć element CustomCarSystemUIFactory i umieścić go w config_systemUIFactoryComponent Za pomocą tych zajęć możesz zaktualizować funkcje VolumeUI i ekran blokady.

Dostosowywanie przełączania i odblokowywania użytkowników

W materiałach poniżej opisano, jak dostosować proces przełączania użytkowników.

Termin Opis
Blokada klawiszy Okno pełnoekranowe zapobiegające przypadkowej interakcji z aplikacją na pierwszym planie. Chroni prywatność każdego użytkownika, gdy jest skonfigurowanych kilku użytkowników.
Wczytuję okno Ekran ładowania wyświetlany podczas przełączania się między użytkownikami.
Ekran blokady, odbijający się ekran Ekran, który wymaga od użytkownika podania kodu PIN, wzoru lub hasła.
Użytkownik Użytkownik Androida.
Selektor użytkownika Ekran wyboru użytkownika wyświetlany podczas uruchamiania urządzenia.
Przełącznik użytkowników Przełącznik użytkowników wyświetlany podczas przełączania ekranów w Szybkich ustawieniach.

Dostosowywanie przełączania użytkowników

Ochrona klawiszy

W systemie operacyjnym Android Automotive ekran blokady klawiszy z selektorem użytkownika wyświetla się tylko gdy użytkownik kliknie przycisk Anuluj na ekranie blokady. Ekran blokady jest widoczny poniżej.

Ekran blokady

Rysunek 1. Ekran blokady

Ekran blokady z odbijakiem wyświetla się, gdy użytkownik wybierze typ prywatności Odblokuj urządzenie, jak pokazano poniżej.

Ekran blokady

Rysunek 2. Ekran blokady.

Gdy blokada jest ustawiona na ręczne włączanie i wyłączanie zasilania, postępuj zgodnie z tymi instrukcjami:

adb shell input keyevent 26

Selektor użytkownika

Ekran wyboru użytkownika wyświetla się, gdy urządzenie jest integralną częścią paska stanu interfejsu systemu w samochodzie a Mapy uruchamiają się ponownie. Więcej informacji: FullscreenUserSwitcher

Wczytuję ekran

Rysunek 3. Ekran wyboru użytkownika

Układ tego ekranu można dostosować w car_fullscreen_user_switcher.xml

Wczytuję ekran

Ekran wczytywania jest wyświetlany przy każdym przełączeniu użytkownika, niezależnie od punktu wejścia. Dla: np. za pomocą selektora użytkowników lub ekranu ustawień. Ekran wczytywania jest zintegrowany interfejsu systemu i mapuje na klasę publiczną zatytułowaną CarUserSwitchingDialog Przykład znajdziesz na rys. 3 powyżej.

Motyw można dostosować za pomocą Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog

Aby skonfigurować użytkownika Androida, początkowy proces kreatora konfiguracji umożliwia skonfigurowanie użytkownika swoje imię i nazwisko. Jeśli sterownik powiąże użytkownika Androida z kontem Google, nazwa jest wybrana z tego konta. Jeśli jednak sterownik określa nazwę, na przykład Sterownik B, a później wiąże tę nazwę użytkownika z jego kontem Google z imieniem Maddy, pierwotnie przypisana nazwa (DriverB) nie została zmieniona, ponieważ została ona jawnie ustawiona. Kierowca zmienić nazwę tylko w menu Ustawienia.

Układ można dostosować w car_user_switching_dialog.xml.

OEM może ukryć pasek stanu i pasek nawigacyjny, korzystając z motywu o nazwie NoActionBar.Fullscreen (To jest oryginalny interfejs systemu zaktualizowany pod kątem interfejsu referencyjnego w samochodzie). Więcej informacji: Dostosowywanie.

OEM może zapewniać punkty wejścia w interfejsie użytkownika do przełączania użytkowników, ale wyniki mogą czasem być niepożądane. W takim przypadku:

  1. OEM tworzy i wyświetla niestandardowy ekran wczytywania (lub okno).
    • W kontekście UX, OEM włącza niestandardowy ekran wczytywania, gdy użytkownik wybierze sposób które można ukryć po zakończeniu zmiany interfejsu użytkownika.
    • OEM musi ustawić priorytet zgodnie z własnymi preferencjami. Może to być na przykład typ okna o wyższym priorytecie. Priorytet priorytet nie może przekroczyć wartości blokady klawiszy.
  2. OEM określa config_customUserSwitchUi=true w podstawowych ramach. config.xml, jak opisano w config_customuserswitchui. Jako platforma nie wyświetla CarUserSwitchingDialog.

Dostosowywanie ekranu blokady

Ekran blokady jest integralną częścią interfejsu systemu, który producent OEM może dostosować. Aby dostosować proces, zacznij od frameworks/base/packages/CarSystemUI/.

Dostosowywanie konfiguracji dla nowego użytkownika

Kreator konfiguracji przeprowadza konfigurację użytkownika po raz pierwszy. To także można dostosować. Dostępne opcje użyj Interfejsy API UserManager aby utworzyć użytkownika. W niektórych przypadkach można zaimplementować tę funkcję w tle, aby uprościć proces tworzenia kreatora konfiguracji.