Tworzenie zaparkowanych aplikacji na system operacyjny Android Automotive

Oprócz obsługi aplikacji przeznaczonych do korzystania podczas jazdy Android Automotive OS obsługuje przeglądarki, gryfilmy do korzystania podczas postoju. Możesz wysyłać tę samą aplikację do samochodów i innych urządzeń z dużym ekranem, wprowadzając tylko kilka drobnych zmian.

Testowanie istniejącej aplikacji na emulatorze systemu operacyjnego Android Automotive

Aby rozpocząć tworzenie aplikacji na system operacyjny Android Automotive, najpierw przetestuj istniejącą aplikację na emulatorze systemu operacyjnego Android Automotive. Aby skonfigurować emulator, wykonaj czynności opisane w sekcji Testowanie za pomocą emulatora systemu operacyjnego Android Automotive. Następnie możesz uruchomić aplikację, wykonując instrukcje podane w artykule Uruchamianie aplikacji na emulatorze.

Podczas uruchamiania aplikacji sprawdź, czy nie występują problemy ze zgodnością, takie jak:

  • Ekrany systemu informacyjno-rozrywkowego mają stałą orientację. Aby spełniać wytyczne dotyczące jakości aplikacji samochodowych, aplikacje muszą obsługiwać orientację pionową i poziomą.
  • Interfejsy API dostępne na innych urządzeniach mogą nie być dostępne w systemie operacyjnym Android Automotive. Na przykład niektóre interfejsy API usług Google Play są niedostępne w systemie operacyjnym Android Automotive. Szczegółowe informacje o rozwiązywaniu tych problemów znajdziesz w sekcji Wyłączanie funkcji.

Konfigurowanie pliku manifestu aplikacji

Aby kierować aplikację na urządzenia z systemem operacyjnym Android Automotive, musisz dodać do pliku manifestu odpowiednie wpisy. Gdy zdecydujesz się na dystrybucję na urządzeniach z systemem operacyjnym Android Automotive, zgodne aplikacje zostaną poddane ręcznej weryfikacji, aby zapewnić ich bezpieczeństwo podczas korzystania w samochodzie. Więcej informacji znajdziesz w artykule Rozpowszechnianie treści w pojazdach.

Wymagane funkcje systemu operacyjnego Android Automotive

Aby można było rozpowszechniać aplikacje na system operacyjny Android Automotive za pomocą Google Play, muszą one spełniać określone wymagania. Więcej informacji znajdziesz w artykule Wymagania dotyczące funkcji Google Play.

Upewnij się, że nie ma żadnych działań zoptymalizowanych pod kątem rozpraszania uwagi

Aby mieć pewność, że aplikacja jest dostępna tylko podczas parkowania, nie uwzględniaj elementu <meta-data> w żadnym elemencie <activity> w pliku manifestu:

<!-- NOT ALLOWED -->
<meta-data
  android:name="distractionOptimized"
  android:value="true"/>

Bez tych metadanych działania aplikacji są automatycznie blokowane przez system operacyjny, gdy samochód przejdzie w tryb jazdy, aby zmniejszyć rozproszenie kierowcy i przejść w stan Wstrzymane. Wywołanie to jest wywołaniem zwrotnym cyklu życia onPause(), podczas którego musisz wstrzymać odtwarzanie zarówno obrazu, jak i dźwięku w aplikacji.

Na urządzeniach, które obsługują tryb zgodności z systemem operacyjnym Android Automotive, blokowanie systemu powoduje, że działania aplikacji przechodzą z stanu Wstrzymane do stanu Zatrzymane. Aby sprawdzić, czy aplikacja wstrzymuje odtwarzanie na wszystkich urządzeniach, a nie tylko na tych, które obsługują tryb zgodności, przeprowadź test na urządzeniu, które nie obsługuje tego trybu. Informacje o tym, które emulatory obsługują tryb zgodności, znajdziesz w artykule Testowanie za pomocą emulatora systemu operacyjnego Android Automotive.

Wpisy w pliku manifestu dotyczące kategorii

Oprócz powyższych wymagań, które dotyczą wszystkich zaparkowanych aplikacji, kategorie filmów i gier mają dodatkowe wymagania:

Optymalizowanie aplikacji pod kątem systemu operacyjnego Android Automotive

Aby zapewnić użytkownikom jak najlepsze wrażenia, podczas tworzenia aplikacji na system operacyjny Android Automotive należy wziąć pod uwagę poniższe kwestie.

Optymalizacja pod kątem dużych ekranów

Ekrany w pojazdach z systemem Android Automotive są bardziej zbliżone rozmiarem, rozdzielczością i formatem do tabletów i urządzeń składanych niż do telefonów. W związku z tym optymalizacja aplikacji pod kątem dużych ekranów przynosi korzyści także użytkownikom w samochodach.

Szczegółowe informacje o maksymalizowaniu możliwości dużych rozmiarów wyświetlania znajdziesz w artykule Obsługa różnych rozmiarów wyświetlania. Znajdziesz tam też galerię multimediówgier, która posłuży Ci jako źródło inspiracji i wskazówek dotyczących projektowania.

Inne optymalizacje dużych ekranów, takie jak obsługa urządzeń wejściowych, nie są tak bezpośrednio korzystne dla systemu operacyjnego Android Automotive, ale mogą poprawić wrażenia użytkownika. Na przykład nawigacja za pomocą klawiatury korzysta z tych samych interfejsów API co nawigacja za pomocą pokrętła, więc wszelkie optymalizacje mogą przynieść korzyści obu formatom.

Praca z wstawkami okna i wycięciami wyświetlacza

Podobnie jak w przypadku innych formatów, system operacyjny Android Automotive zawiera elementy interfejsu systemu, takie jak paski stanu i nawigacji, a także obsługuje wyświetlacze o nieprostokątnych kształtach.

Domyślnie aplikacje wyświetlają się w obszarze, który nie nakłada się na paski systemu ani wycięcia w ekranie. Możesz jednak chcieć, aby aplikacja ukrywała paski systemowe, rysowała treści za nimi lub wyświetlała treści w wycięciu w ekranie zgodnie z instrukcjami w artykule Układ aplikacji w ramkach okna. Jeśli Twoja aplikacja wykonuje któreś z tych działań, zapoznaj się z podrozdziałami poniżej, aby dowiedzieć się, jak zapewnić jej prawidłowe działanie na urządzeniach z systemem operacyjnym Android Automotive.

paski systemowe, tryb pełnoekranowy i renderowanie od krawędzi do krawędzi;

Paski systemu w samochodach mogą mieć inny rozmiar i być umieszczone w innym miejscu niż na innych platformach. Na przykład paski nawigacyjne mogą znajdować się po lewej, prawej lub u dołu ekranu. Nawet jeśli na górze znajduje się pasek stanu, a na dole pasek nawigacyjny (jak w przypadku większości telefonów i tabletów), w samochodach te elementy są zwykle znacznie większe.

System operacyjny Android Automotive umożliwia producentom urządzeń OEM kontrolowanie, czy aplikacje mogą wyświetlać lub ukrywać paski systemu, aby wchodzić w tryb pełnoekranowy i z niego wychodzić. Na przykład przez uniemożliwienie aplikacjom ukrywania pasków systemowych OEM mogą zapewnić, że elementy sterujące pojazdu, takie jak elementy sterujące klimatyzacją, są zawsze dostępne na ekranie. Jeśli OEM zablokował aplikacjom możliwość kontrolowania pasków systemowych, nic się nie dzieje, gdy aplikacja wywołuje interfejs API WindowInsetsController (lub WindowInsetsControllerCompat). Aby dowiedzieć się więcej o sposobach wykrywania, czy aplikacja była w stanie zmodyfikować załączniki, zapoznaj się z dokumentacją showhide.

Producenci OEM mogą też określić, czy aplikacje mogą ustawiać kolor i przezroczystość pasków systemu, aby były one zawsze wyraźnie widoczne. Jeśli aplikacja wyświetla się od krawędzi do krawędzi, sprawdź, czy za paskami systemowymi wyświetlane są tylko treści niekrytyczne. Te treści mogą być niewidoczne, jeśli producent urządzenia uniemożliwia ustawienie koloru lub przezroczystości pasków.

<!-- Depending on OEM configuration, these style declarations
     (and the corresponding runtime calls) may be ignored -->
<style name="...">
  <item name="android:statusBarColor">...</item>
  <item name="android:navigationBarColor">...</item>
  <item name="android:windowTranslucentStatus">...</item>
  <item name="android:windowTranslucentNavigation">...</status>
</style>

Jeśli aplikacja zajmuje cały ekran, nie zakładaj rozmiaru, liczby, typu ani lokalizacji pasków systemowych. Zamiast tego użyj interfejsów API okienek wstawionych, aby rozmieścić treści aplikacji w stosunku do pasków systemu. Więcej informacji o używaniu tych interfejsów API znajdziesz w artykule Wyświetlanie treści od krawędzi do krawędzi w aplikacji. Stałe wartości wypełnienia, które, choć nie są zalecane, mogą utrzymać treści w bezpiecznej strefie na innych urządzeniach, ale prawdopodobnie nie w samochodach.

dostosowywać się do wyświetlaczy o nieregularnych kształtach,

Oprócz wyświetlaczy prostokątnych niektóre pojazdy mogą mieć ekrany o nieregularnym kształcie, jak na rysunku 1:

Schemat urządzenia z systemem Android Automotive z wyświetlaczem zakrzywionym po prawej stronie.
Rysunek 1. Urządzenie z systemem operacyjnym Android Automotive z wyświetlaczem zakrzywionym po prawej stronie. Zielony obszar to bezpieczny prostokąt, który nie zachodzi na ogranicznik wyświetlanego wycinka krzywej.

Jeśli Twoja aplikacja nie jest renderowana od krawędzi do krawędzi, nie musisz nic robić, aby renderować ją w bezpiecznym obszarze.

Jeśli Twoja aplikacja jest renderowana bez ramki, możesz wybrać, jak ma się zachowywać w przypadku wycięć w ekranie. Możesz to zrobić, używając zasobów, ustawiając atrybut android:windowLayoutInDisplayCutoutMode dla motywu aplikacji lub w czasie wykonywania, modyfikując atrybut okna layoutInDisplayCutoutMode.

Typy wycięć na wyświetlaczu na urządzeniach z systemem operacyjnym Android Automotive różnią się od tych na urządzeniach mobilnych, dlatego nie używaj LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT ani LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, które są zoptymalizowane pod kątem wycięć na urządzeniach mobilnych. Zamiast tego użyj wartości LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER lub LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS, aby zawsze unikać lub zawsze wchodzić w wycięcie. W przypadku tej drugiej opcji więcej informacji o interfejsach API związanych z wycinkami wyświetlacza znajdziesz w artykule Obsługa wycięć wyświetlacza.

Jeśli Twoja aplikacja renderuje się w obszarze wycięcia na wyświetlaczu, a chcesz, aby działała inaczej na Androidzie Automotive niż na urządzeniach mobilnych, postępuj zgodnie z instrukcjami w sekcji Disable features (Wyłącz funkcje), jeśli aplikacja ustawia to zachowanie podczas działania, i Use alternate resources (Użyj alternatywnych zasobów), jeśli aplikacja ustawia to zachowanie za pomocą plików zasobów.

.

Wyłączanie funkcji

Jeśli udostępniasz istniejącą aplikację mobilną w systemie operacyjnym Android Automotive, niektóre funkcje mogą być nieodpowiednie lub niedostępne. Na przykład samochody zazwyczaj nie udostępniają dostępu do kamer. Dodatkowo w systemie operacyjnym Android Automotive dostępny jest tylko podzbiór usług Google Play. Więcej informacji znajdziesz w Usługach Google Play dla samochodów.

Aby wykryć, czy aplikacja działa w systemie operacyjnym Android Automotive, możesz użyć interfejsu PackageManager.hasSystemFeature API, sprawdzając, czy zawiera ona funkcję FEATURE_AUTOMOTIVE, jak w tym przykładzie:

Kotlin

val packageManager: PackageManager = ... // Get a PackageManager from a Context
val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Java

PackageManager packageManager = ... // Get a PackageManager from a Context
boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Jeśli aplikacja ma też komponent Androida Auto, możesz użyć interfejsu CarConnectionbiblioteki aplikacji Android do samochodu, aby wykryć, czy aplikacja działa na systemie operacyjnym Android Automotive czy Android Auto, albo czy w ogóle nie jest połączona z samochodem.

W przypadku obrazu w okienku postępuj zgodnie ze sprawdzonymi metodami, aby sprawdzić, czy funkcja jest dostępna, i odpowiednio zareagować.

Obsługa scenariuszy offline

Samochody są coraz bardziej połączone z internetem, ale zaleca się, aby aplikacje działały bez połączenia z internetem, na przykład w tych sytuacjach:

  • Użytkownicy mogą zrezygnować z danych mobilnych oferowanych w ramach abonamentu w pakiecie od producenta samochodów.
  • W niektórych obszarach dostęp do danych mobilnych może być ograniczony.
  • Samochody z radiem Wi-Fi mogą znajdować się poza zasięgiem sieci Wi-Fi lub producent OEM może wyłączyć Wi-Fi na rzecz sieci komórkowej.

Przygotuj się na takie scenariusze w swojej aplikacji, stosując łagodne ograniczenie funkcji, które wymagają dostępu do internetu, np. oferując treści offline. Więcej informacji znajdziesz w artykule o sprawdzonych metodach optymalizacji sieci.

Używanie innych zasobów

Aby dostosować aplikację do samochodów, możesz użyć kwalifikatora zasobu car, aby podać alternatywne zasoby, gdy aplikacja działa na systemie operacyjnym Android Automotive. Jeśli np. używasz zasobów wymiarów do przechowywania wartości wypełniania, możesz użyć większej wartości dla zbioru zasobów car, aby zwiększyć liczbę docelowych punktów styczności z klientem.

Dystrybucja aplikacji

Po przetestowaniu aplikacji pod kątem zgodności ze wskazówkami dotyczącymi jakości aplikacji samochodowych w danej kategorii możesz rozpowszechniać ją w Google Play na urządzeniach z wbudowaną aplikacją Google. Więcej informacji o procesie publikowania znajdziesz w artykule Rozpowszechnianie aplikacji w Google Play.

Przesyłanie opinii o zaparkowanych aplikacjach

Jeśli podczas tworzenia zaparkowanej aplikacji na system operacyjny Android Automotive napotkasz problem lub chcesz zgłosić prośbę o dodanie funkcji, możesz to zrobić za pomocą Narzędzia do zgłaszania problemów Google. Pamiętaj, aby podać wszystkie wymagane informacje w szablonie problemu. Zanim zgłosisz nowy problem, sprawdź, czy nie został on już zgłoszony na liście problemów. Możesz subskrybować problemy i głosować na nie, klikając gwiazdkę obok problemu w lokalizatorze. Więcej informacji znajdziesz w artykule Subskrybowanie problemu.

Tworzenie nowego zgłoszenia