Podczas rozpowszechniania aplikacji na urządzenia z systemem operacyjnym Android Automotive należy wziąć pod uwagę kilka kwestii związanych z tym formatem. W tym przewodniku omówiliśmy te kwestie.
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 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ę, postępując zgodnie z instrukcjami 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 na Androida Auto, 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 Spełnianie wymagań Google Play dotyczących funkcji.
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 przechodzi 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 przez system powoduje przejście 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:
- W przypadku aplikacji wideo zapoznaj się z informacjami w artykule Oznaczanie aplikacji jako aplikacji wideo.
- W przypadku gier zapoznaj się z artykułem Oznaczanie aplikacji jako gry.
Optymalizowanie aplikacji pod kątem systemu operacyjnego Android Automotive
Aby zapewnić użytkownikom jak najlepsze wrażenia w samochodzie, podczas tworzenia aplikacji na system operacyjny Android Automotive należy wziąć pod uwagę te kwestie:
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 opisem w artykule Układ aplikacji w ramkach okna. Jeśli Twoja aplikacja wykonuje którąś z tych czynności, zapoznaj się z podrozdziałami poniżej, aby dowiedzieć się, jak sprawić, aby działała ona prawidłowo na urządzeniach w ekosystemie Androida Automotive.
paski systemowe, tryb pełnoekranowy i renderowanie od krawędzi do krawędzi;
Rozmiary i położenie pasków systemu w samochodach mogą się różnić od tych 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ń oryginalnych 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-y 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ą show
i hide
.
Producenci OEM mogą też określić, czy aplikacje mogą ustawiać kolor i przezroczystość pasków systemu, aby zawsze były wyraźnie widoczne. Jeśli aplikacja jest wyświetlana 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 OEM 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. W żadnym formacie nie zalecamy stosowania stałych wartości wypełnień, ale w przypadku samochodów prawdopodobnie nie będą one w ogóle utrzymywać treści w bezpiecznym obszarze.
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:

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
motywu aplikacji lub 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łączanie funkcji) (jeśli aplikacja ustawia to zachowanie podczas działania) lub Use alternate resources (Używanie 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 zawiera też komponent Androida Auto, możesz użyć interfejsu API CarConnection
z biblioteki aplikacji Android do samochodu, aby wykryć, czy aplikacja działa w systemie operacyjnym Android Automotive czy Android Auto, czy też 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 Sprawdzone metody optymalizacji sieci.
Używanie innych zasobów
Aby dostosować aplikację do samochodów, możesz użyć car
kwalifikatora zasobu, aby podać alternatywne zasoby, gdy aplikacja działa w samochodzie z systemem 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.