Przegląd interfejsu HMI

Android Automotive to samochodowa platforma informacyjno-rozrywkowa dostarczana w ramach projektu Android Open Source Project (AOSP). Artykuły w tym temacie przedstawiają kluczowe koncepcje i komponenty udostępniane przez interfejs użytkownika Android Automotive System oraz podstawowe aplikacje potrzebne do zbudowania skutecznego systemu interfejsu człowiek-maszyna (HMI) dla producentów OEM, zewnętrznych programistów i użytkowników końcowych.

  • Przewodnik integracji hosta AOSP . Host aplikacji umożliwia aplikacjom samochodowym 3P renderowanie w jego imieniu komponentów interfejsu użytkownika (UI) w stylu OEM.
  • Struktura ustawień samochodu . Ustawienia samochodu zapewniają wizualny interfejs użytkownika skupiony na samochodzie, podstawowe optymalizacje rozpraszające uwagę kierowcy i dodatkowe punkty wejścia w zakresie dostosowywania dla producentów OEM.
  • Przewodnik integracji biblioteki interfejsu użytkownika samochodu . Biblioteka Car UI zapewnia platformę do programowania interfejsu użytkownika, która umożliwia wszystkim aplikacjom znajdującym się w samochodzie osiągnięcie spójności i personalizacji.
  • Dostosuj ikony systemowe paska stanu . Pasek stanu to element interfejsu użytkownika systemu Android służący do ciągłego wyświetlania użytkownikom ważnych informacji. Dowiedz się, jak dostosować ikony systemowe paska stanu.
  • Powiadomienia ostrzegawcze . Dowiedz się, jak dostosować powiadomienia heads-up.
  • Telefon . Użyj tej aplikacji systemu Android, aby wdrożyć zoptymalizowaną pod kątem rozproszenia (DO) obsługę połączeń Bluetooth, przeglądania kontaktów i zarządzania połączeniami.
  • Media . Za pomocą zaledwie kilku ustawień i usługi programiści mogą rozszerzać istniejące aplikacje multimedialne. Chociaż aplikacje muszą być zgodne z szablonem Automotive Media, programiści mogą dostosowywać kolory szablonu, czcionki, ikony i inne elementy, aby stworzyć wrażenie marki.
  • Powiadomienia . Dowiedz się jak zmienić wygląd i konfiguracje powiadomień.

Terminologia

Terminy te są używane w HMI i powiązanych artykułach:

Termin Definicja
Podstawowe aplikacje Kluczowy zestaw aplikacji krytycznych dla funkcjonalności systemu, w tym Ustawienia, Radio, HVAC, Media, Dialer i Klawiatura.
Dokument definicji zgodności (CDD) Wylicza wymagania jakie muszą spełniać urządzenia aby były kompatybilne z najnowszą wersją Androida.
Zestaw testów zgodności (CTS) Bezpłatny pakiet testowy klasy komercyjnej, dostępny do pobrania w witrynie Compatibility Test Suite Downloads .
Dostosowywanie Ćwiczenie polegające na modyfikacji implementacji AOSP w celu spełnienia wymagań producenta OEM. Zwykle wiąże się to z użyciem nakładek zasobów w celu wprowadzenia kosmetycznych zmian, przy jednoczesnym zapewnieniu zgodności z CDD, CTS i wszystkimi odpowiednimi wytycznymi dotyczącymi doświadczenia użytkownika.
Aplikacje bohaterów Zestaw kluczowych aplikacji kluczowych dla wszystkich aspektów Androida, w tym funkcjonalności, możliwości aktualizacji, ekosystemu zewnętrznych programistów i użytkowników końcowych. Aplikacje Hero obejmują powiadomienia, ustawienia, multimedia i centrum komunikacyjne/dialer. Odpowiednie wdrożenia AOSP powinny mieć jakość produkcyjną.
Nakładki zasobów Aby wpłynąć na renderowanie interfejsu użytkownika, użyj tego mechanizmu do zamiany kolorów, zmiany wymiarów, umożliwienia rysowania i zastosowania zasobów układu w czasie kompilacji (najczęściej) lub w czasie wykonywania (Runtime Resource Overlays (RRO)).
Interfejs systemu Interfejs użytkownika poza aplikacją należącą do systemu, taki jak pasek nawigacji, pasek stanu, ekran blokady i okno dialogowe głośności.
Temat Zbiór kolorów i stylów używanych do określenia wyglądu i działania komponentów i aplikacji, które dziedziczą motyw.
Doświadczenie użytkownika (UX) Dziedzina projektowania interfejsu użytkownika (UI) i jego użyteczności.

Dostosowywanie

Implementacja AOSP interfejsu systemowego i innych podstawowych aplikacji systemowych stanowi solidną podstawę do rozpoczęcia procesu rozwoju HMI. Modyfikowanie implementacji AOSP (głównie poprzez wykorzystanie nakładek zasobów) w celu spełnienia wymagań dotyczących marki, działalności i wymogów prawnych producenta OEM nazywa się dostosowywaniem .

Chociaż cały system został zaprojektowany i zbudowany z myślą o elastyczności, oczekuje się, że poszczególne jego elementy będą dostosowywane w różnym stopniu:

  • Interfejs systemu. OEM może dostosować lub wymienić implementację AOSP w granicach określonych przez CDD i CTS oraz wszelkie inne obowiązujące wytyczne dotyczące UX.

  • Aplikacje systemowe niebędące bohaterami (znane również jako referencje ) . Producenci OEM mogą dostosować lub wymienić implementację AOSP.

  • Aplikacje bohaterów . Do każdej aplikacji dołączony jest zestaw szczegółowych wskazówek dotyczących dostosowywania. Zdecydowanie zachęca się producentów OEM do korzystania z implementacji AOSP, a następnie dostosowywania jej w granicach określonych w tych wytycznych.

Konfiguracja gęstości

Aby mieć pewność, że elementy interfejsu użytkownika będą renderowane prawidłowo przy danej konfiguracji wyświetlania fizycznego, właściwość gęstości musi być ustawiona na segment ( Display Metrics ), który najlepiej odpowiada gęstości fizycznej, na przykład ten wpis w pliku kompilacji:

PRODUCT_PROPERTY_OVERRIDES := \
        ro.sf.lcd_density=160

Silnik ograniczeń UX

CarUxRestrictionsManager zapewnia aplikacjom nasłuchiwanie zmian związanych ze stanem jazdy w celu odpowiedniego modyfikowania doświadczenia użytkownika. Producenci OEM mogą nałożyć plik konfiguracyjny na packages/services/Car/service/res/xml/car_ux_restrictions_map.xml aby wpłynąć na zachowanie systemu.

Motyw systemowy

Motywem określającym domyślny dla całego systemu zestaw elementów, takich jak kolory i style tekstu, jest DeviceDefault . Zachęcamy producentów OEM do rozpoczęcia ogólnego procesu dostosowywania poprzez modyfikację motywu DeviceDefault. Domyślnie systemowy interfejs użytkownika i wszystkie aplikacje systemowe w AOSP dziedziczą z tego motywu. Zachęcamy także aplikacje systemowe opracowane przez producentów OEM do dziedziczenia opcji DeviceDefault. Nie oczekuje się, że aplikacje opracowane przez inne firmy będą dziedziczyć DeviceDefault, ale zamiast tego będą korzystać z Theme.Car dostępnego w bibliotece androidx.car . Pliki znajdują się w następujący sposób:

  • Rdzeń . /frameworks/base/core/res/res/values/themes_device_defaults.xml
  • Kolory . /frameworks/base/core/res/res/values/colors_car.xml
  • Style . /frameworks/base/core/res/res/values/styles_car.xml
  • Nakładka na samochód.
    /packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml

Oczekuje się, że producenci OEM będą mieli strukturę nakładki równoległą do katalogu car_product w swoim katalogu dostawcy, co dodatkowo rozszerzy nakładkę car_product .

Aplikacja tematyczna Plac zabaw

Ta aplikacja usprawnia proces dostosowywania motywu DeviceDefault , wizualizując wszystkie atrybuty motywu w jednym miejscu. Ponadto porównując sposób renderowania niektórych stylów w tej aplikacji z innymi aplikacjami systemowymi, programiści mogą szybko debugować problemy z motywem. Ta aplikacja jest dostępna pod adresem:

  /packages/services/Car/tests/ThemePlayground

Interfejs systemu

Systemowy interfejs użytkownika zawiera cały interfejs użytkownika w /frameworks/base , głównie w /frameworks/base/packages/CarSystemUI . Obejmuje to pasek nawigacji, pasek stanu, ekran blokady, okno dialogowe głośności, wyskakujące okienka, selektor użytkownika i okna dialogowe uprawnień. Producenci OEM mogą w szerokim zakresie dostosowywać komponenty interfejsu użytkownika systemu za pomocą nakładek zasobów i motywów, pod warunkiem, że każdy z nich spełnia wymagania CDD, CTS i inne obowiązujące wytyczne dotyczące UX.

Aplikacje systemowe

Android Automotive zawiera zestaw podstawowych aplikacji systemowych krytycznych dla ogólnej funkcjonalności systemu. Spośród nich Centrum komunikacyjne, Media, Powiadomienia i Ustawienia są uważane za aplikacje bohaterskie .

  • Centrum Komunikacyjne
  • HVAC
  • Edytor IME (klawiatura)
  • Launcher (ekran główny)
  • Lokalny odtwarzacz multimedialny
  • Głoska bezdźwięczna
  • Posłaniec
  • Powiadomienia
  • Radio
  • Ustawienia

Ekran główny

Ekran główny, znany jako Car Launcher , jest stroną docelową interfejsu HMI. Implementacja AOSP służy wyłącznie jako odniesienie i oczekuje się, że producenci OEM zastąpią ją własną, która często łączy nawigację, odtwarzanie multimediów, komunikację i inne stany systemu, w razie potrzeby. Często aplikacja Car Launcher wyświetla aplikacje dostępne w systemie. Aby dowiedzieć się, jak obsługiwać zdarzenia, takie jak najnowsze aktualizacje, zmiany pakietów i aplikacje bezobsługowe (bez aktywności w programie uruchamiającym), zobacz implementację referencyjną.

Powiadomienia

Powiadomienia są integralną częścią systemu operacyjnego Android i te same konstrukcje (w tym powiadomienia od razu, lista/centrum powiadomień, interfejsy API powiadomień, ranking i działania wbudowane) zostały uwzględnione w Android Automotive. Aby uzyskać szczegółowe informacje, zobacz Przegląd powiadomień urządzenia przenośnego. Aby zoptymalizować zastosowania w motoryzacji, wprowadzono następujące modyfikacje (w porównaniu do ręcznego stosu powiadomień):

  • Zmniejszenie ogólnej treści powiadomień widocznych dla użytkowników. Usunięcie trwającego odtwarzania multimediów, bieżącej nawigacji i „nieistotnych” (ważność LOW i poniżej) powiadomień usług pierwszego planu aplikacji systemowych z listy/centrum powiadomień, przy założeniu, że te powiadomienia są albo zbędne (np. klaster pokazujący stan multimediów ) lub nie są przydatne.

  • Usunięcie złożonych elementów sterujących kontekstowych (takich jak elementy sterujące oparte na długim naciśnięciu i przesunięciu).

  • Przestrzeganie konfiguracji silnika ograniczeń UX.

    • Podgląd treści powiadomień w wiadomościach może być ukryty w zależności od stanu dysku.
    • Wszystkie struny ograniczone do maksymalnej długości.
  • Dodanie nowych kategorii powiadomień specjalnie dla samochodów w systemie Android 9, dostępnych tylko dla dołączonych aplikacji systemowych działających jako android.uid.system .

  • CATEGORY_CAR_EMERGENCY . Miejsce na górze listy powiadomień. Omija mechanizmy „nie przeszkadzać” (DND).

  • CATEGORY_CAR_WARNING . Miejsce poniżej sytuacji awaryjnych i powyżej innych (pomija DND).
  • CATEGORY_CAR_INFORMATION . Zestawione z resztą powiadomień na podstawie „ważności” i aktualności.

Kompleksowa implementacja stosu powiadomień, od interfejsów API powiadomień po interfejs użytkownika, jest uważana za aplikację główną . Aby zagwarantować spójną interoperacyjność API we wszystkich HU i zmaksymalizować możliwości aktualizacji, zdecydowanie zachęca się producentów OEM do wdrożenia AOSP, a następnie lekkiego dostosowania go.

Dostosowywanie

Obowiązują standardowe motywy i nakładki zasobów DeviceDefault. Bardzo ograniczona liczba pokręteł dostosowywania zachowań jest dostępna pod adresem:

packages/apps/Car/Notification/res/values/config.xml

Ustawienia

Aplikacja Ustawienia ( Ustawienia samochodu ) to jedna z głównych aplikacji, która udostępnia pokrętła, za pomocą których użytkownik może skonfigurować pewne aspekty systemu operacyjnego Android i reszty samochodu. Aplikacja Ustawienia udostępnia ponad 200 funkcji systemu operacyjnego, które są ściśle powiązane z każdą główną wersją Androida. Aby umożliwić możliwość aktualizacji i uniknąć fragmentacji, zdecydowanie zachęca się producentów OEM do wdrożenia AOSP, a następnie dostosowania go (zamiast dzielenia implementacji).

Dostosowywanie

Aplikacja Ustawienia uwzględnia dostosowywanie i udostępnia kilka możliwości dostosowywania.

  • Tematyka. Umożliwia wizualne dostosowanie sposobu renderowania każdego typu obiektu preferencji, w tym:

    • Preference.DeviceDefault.CheckBoxPreference

    • Preference.DeviceDefault.DialogPreference.EditTextPreference

  • Dostosowanie hierarchii. Aby włączyć:

    • Uruchom w dowolnym fragmencie głównym, nałóż wartość config_settings_hierarchy_root_fragment w pliku zatytułowanym Settings/res/values/config.xml

    • Dostosowywanie elementów, takich jak kolejność, grupowanie, tekst i ikony, nakładka Settings/res/xml/*.xml

  • Wtrysk statyczny. Konfigurując projekt nakładki, producenci OEM mogą dodawać własne ekrany, definiując, a następnie dodając do hierarchii dodatkowe klasy Fragment i Controller.

  • Wtrysk dynamiczny . Jeśli oddzielna aplikacja ( apk ) zawiera ekran Ustawienia, który musi być połączony z główną aplikacją Ustawienia, oddzielną aplikację można dynamicznie wstrzykiwać. Aby uzyskać więcej informacji, zobacz Preferencje dynamiczne .

Głoska bezdźwięczna

Media to aplikacja główna , która zapewnia interfejs użytkownika w imieniu aplikacji multimedialnych, które implementują interfejsy API MediaSession i MediaBrowser . Aplikacjami multimedialnymi mogą być aplikacje innych firm (takie jak Spotify i Pandora), a także inne źródła multimediów, takie jak przesyłanie strumieniowe Bluetooth (BT) i media lokalne.

W systemie Android Auto ( projekcja ) dostępnych jest setki aplikacji multimedialnych, a wszystkie z nich implementują interfejsy API multimediów zgodnie z opisem w sekcji Zapewnianie odtwarzania dźwięku w trybie automatycznym . Interfejsy API multimediów ewoluują wraz z każdą główną wersją Androida i wydaniami biblioteki Androidx . Aby zagwarantować interoperacyjność interfejsu API we wszystkich aplikacjach multimedialnych i przyszłych wersjach Androida, zdecydowanie zachęca się producentów OEM do wdrożenia AOSP, a następnie dostosowania go.

Dostosowywanie

Standardowe motywy w motywie DeviceDefault dotyczą również multimediów. Ponadto możliwe jest dalsze dostosowywanie wyglądu i działania za pomocą nakładek zasobów, pod warunkiem, że dostosowanie mieści się w granicach wytycznych UX.

Inne aplikacje multimedialne

Nośniki USB i źródła multimediów

W miarę możliwości zdecydowanie zaleca się podłączenie tych źródeł multimediów do Media poprzez implementację interfejsów API MediaSession i MediaBrowser (dotyczy to każdej aplikacji multimedialnej innej firmy). Zobacz aplikację LocalMediaPlayer w AOSP. Ta aplikacja wyświetla lokalne pliki multimedialne i jest wyświetlana jako źródło w Mediach.