Tworzenie zaparkowanych aplikacji na system operacyjny Android Automotive

Oprócz obsługi aplikacji przeznaczonych do używania podczas jazdy Android Automotive System operacyjny obsługuje przeglądarki, gry i filmy do użytku po zaparkowaniu. Możesz wysłać tę samą aplikację do samochodów co inne dużych ekranów z kilkoma drobnymi zmianami.

Testowanie istniejącej aplikacji przy użyciu emulatora systemu operacyjnego Android Automotive

Aby zacząć tworzyć aplikację na system operacyjny Android Automotive, najpierw przetestuj dotychczasową na emulatorze systemu operacyjnego Android Automotive. Aby skonfigurować emulator, postępuj zgodnie z instrukcjami czynności opisane w artykule Testowanie za pomocą emulatora systemu operacyjnego Android Automotive. Następnie możesz uruchomić aplikację, wykonując instrukcje podane na Uruchom aplikację w emulatorze.

Podczas uruchamiania aplikacji zwróć uwagę na problemy ze zgodnością, takie jak :

  • Ekrany informacyjno-rozrywkowe mają stałą orientację. Aby spełnić samochód wytycznych dotyczących jakości aplikacji, aplikacje muszą obsługiwać orientację pionową i poziomą. lub orientacji strony.
  • Interfejsy API dostępne na innych urządzeniach mogą być niedostępne na Androidzie Automotive System operacyjny Na przykład niektóre interfejsy API Usług Google Play są niedostępne na Androidzie. Automotive OS. Zobacz sekcję Wyłączanie funkcji. .

Skonfiguruj pliki manifestu aplikacji

Aby kierować reklamy na system operacyjny Android Automotive, aplikacja musi mieć określone wpisy w pliku manifestu. Dzięki nim aplikacje kierowane na system operacyjny Android Automotive są przesyłane do Sklepu Play w osobnym typie wersji systemu operacyjnego Automotive. Są przekazywane przeprowadzić ręczną weryfikację, aby mieć pewność, że można ich bezpiecznie używać w samochodzie. Więcej informacji znajdziesz w artykule Dystrybucja aplikacji na Androida w samochodach. .

Wymagane funkcje systemu operacyjnego Android Automotive

Aplikacje na system operacyjny Android Automotive, które mają być widoczne w Sklepie Play w samochodzie musi zawierać te właściwości: <uses-feature> element w AndroidManifest.xml plik:

<manifest ...>
    ...
    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />
    ...
</manifest>

Aplikacje przesłane do ścieżek niebędących samochodami nie mogą zadeklarować tego uprawnienia: <uses-feature> pokazane w poprzednim przykładzie kodu, ponieważ nie mogą one polegać sprzęt do samochodu. Aby udostępnić tę samą aplikację zarówno w branży motoryzacyjnej, urządzeń niebędących samochodami, musisz wygenerować co najmniej 2 rodzaje aplikacji: a druga dla urządzeń mobilnych. Więcej informacji na temat konfiguracji aby dowiedzieć się, jak utworzyć te oddzielne smaki, zapoznaj się z dokumentacją:

Aplikacje mogą mieć tę samą nazwę pakietu, ale muszą mieć różne kody wersji, ponieważ są przesyłane do ścieżek w Sklepie Play oddzielnie.

Zamiast używać osobnych smaków, możesz użyć osobnego pakietu nazwy mobilnych i motorowych plików APK lub pakietów aplikacji. Aby zrozumieć w zaletach obu metod. Nazwy pakietów znajdziesz w przewodniku dla deweloperów aplikacji do multimediów.

Oprócz elementu pokazanego w poprzednim przykładowym kodzie aplikacje stworzone na potrzeby System operacyjny Android Automotive musi zawierać te elementy <uses-feature> w element główny <manifest>:

<uses-feature
  android:name="android.hardware.wifi"
  android:required="false"/>
<uses-feature
  android:name="android.hardware.screen.portrait"
  android:required="false"/>
<uses-feature
  android:name="android.hardware.screen.landscape"
  android:required="false"/>

Ustawienie tych funkcji jako niewymagane pomoże zapewnić, że aplikacja nie koliduje z funkcji sprzętowych dostępnych na urządzeniach z systemem operacyjnym Android Automotive.

Upewnij się, że nie ma tam żadnych aktywności zoptymalizowanych pod kątem rozpraszania uwagi.

Aby mieć pewność, że aplikacji można używać tylko po zaparkowaniu, nie muszą zawierać ten element <meta-data> w żadnej z nich <activity> elementu w: plik manifestu:

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

Bez tych metadanych aktywność w aplikacji jest automatycznie blokowana przez system operacyjny, gdy samochód przejdzie w tryb samochodowy, aby ograniczyć rozpraszanie uwagi sterownika. Dzieje się tak, gdy onPause wywołanie zwrotne w cyklu życia usługi, w trakcie którego należy wstrzymać odtwarzanie filmu i dźwięku z aplikacji.

Wpisy manifestu dotyczące określonej kategorii

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

Optymalizacja aplikacji pod kątem systemu operacyjnego Android Automotive

Aby zapewnić użytkownikom maksymalną wygodę, pamiętaj o tych kwestiach: pod uwagę podczas tworzenia aplikacji na system operacyjny Android Automotive.

Optymalizacja pod kątem dużych ekranów

Ekrany obecne w pojazdach z systemu operacyjnego Android Automotive są bardziej podobne pod względem rozmiaru. i rozdzielczość obrazu, czyli format obrazu na tablety i urządzenia składane, a nie na telefony. W związku z tym: zoptymalizowanie aplikacji pod kątem dużych ekranów jest korzystne również dla użytkowników samochodów.

W szczególności zapoznaj się z sekcją Obsługa różnych ekranów w sekcji rozmiary i Przenieś z interfejsu do układów elastycznych przewodników, w których znajdziesz szczegółowe informacje na temat pełnego wykorzystania dużych rozmiarów wyświetlaczy, media i gry w galeriach, gdzie znajdziesz inspiracje i wskazówki dotyczące projektowania.

Inne optymalizacje dla dużego ekranu, takie jak metody wprowadzania zgodność nie są bezpośrednio korzystne dla systemu operacyjnego Android Automotive, ale nadal mogą i zwiększać wygodę użytkowników. Na przykład przy nawigowaniu za pomocą klawiatury wykorzystywane są tych samych interfejsów API co nawigacja pokrętła, więc wprowadzone w niej optymalizacje mogą być korzystne dla obu formatów.

Praca z wkładkami okiennymi i wycięciami w ekranie

Podobnie jak w przypadku innych formatów, system operacyjny Android Automotive zawiera interfejs systemu. takie jak paski stanu i nawigacji, oraz obsługa i wyświetlacze.

Domyślnie aplikacje rysują się na obszarze, który nie pokrywa się z paskami systemowymi lub wycięcia w ekranie. Aplikacja może jednak ukrywać paski systemowe, rysować za nimi treści lub pokazywać je w wycięciu w ekranie zgodnie z opisem. w artykule Umieszczanie aplikacji w wkładkach okien. Jeśli aplikacja spełnia któreś z tych celów, szczegółowe informacje na ten temat znajdziesz w tych podpunktach. jak zapewnić prawidłowe działanie aplikacji w całym ekosystemie systemu operacyjnego Android Automotive urządzenia.

Słupki systemowe, tryb pojemny i renderowanie od krawędzi do krawędzi

Słupki systemowe w samochodach mogą mieć inny rozmiar i położenie i formatów. Paski nawigacyjne mogą np. znajdować się po lewej stronie, w prawej części ekranu lub w dolnej części ekranu. Nawet jeśli pasek stanu jest włączony oraz pasek nawigacyjny u dołu (jak w większości telefonów i tabletów), rozmiar tych elementów będzie prawdopodobnie znacznie większy w przypadku samochodów.

Ponadto system operacyjny Android Automotive umożliwia producentom OEM określenie, czy Aplikacje mogą wyświetlić lub ukryć paski systemowe, aby włączyć i zamknąć prezentację . Uniemożliwiając na przykład aplikacjom ukrywając paski systemowe, producenci OEM mogą zapewnić, że elementy sterujące pojazdu, np. klimatyzacja, są zawsze dostępne na ekranie. Jeśli OEM zablokował aplikacjom kontroli pasków systemowych, nic się nie dzieje, gdy aplikacja wywołuje WindowInsetsController (lub WindowInsetsControllerCompat) Interfejsy API do wyświetlania lub ukrywania pasków systemowych. Zapoznaj się z dokumentacją: show i hide, aby dowiedzieć się więcej o tym, jak sprawdzić, czy aplikacja mogła zmodyfikować .

Również producenci OEM mogą decydować, czy aplikacje mogą ustawić kolor przezroczystość pasków systemowych zapewnia, że słupki i zawarte w nich elementy są stale widoczne. Jeśli aplikacja generuje od krawędzi do krawędzi, sprawdź, czy za pasami systemu wyświetlana jest tylko treść niekrytyczna. Ta treść może nie być widoczna, jeśli producent oryginalnego urządzenia uniemożliwi ustawienie koloru czy przezroczystość 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 Twoja aplikacja jest w całej odsłonie, nie traktuj jej z pewnością rozmiaru, liczby typu czy lokalizacji pasków systemowych. Zamiast tego do układania użyj interfejsów API wstawienia okien jej zawartości względem pasków systemowych. Zobacz Wyświetlaj treści w aplikacji od krawędzi do krawędzi . Zakodowane na stałe wartości dopełnienia, które podczas nigdy nie jest zalecany, może powodować, że treści będą znajdować się w bezpiecznym obszarze na innych urządzeniach w samochodach.

Dostosuj do wyświetlaczy o nieregularnym kształcie

Oprócz prostokątnych wyświetlaczy niektóre pojazdy mogą też mieć nieregularny kształt. tak jak na Rys. 1:

Schemat urządzenia z systemem operacyjnym Android Automotive z wyświetlaczem
      jest wykrzywiony po prawej stronie.
Rysunek 1. Urządzenie z systemem operacyjnym Android Automotive z wyświetlaczem jest wykrzywiony po prawej stronie. Teren zielony to bezpieczny prostokąt, nakłada się z ramką ograniczającą wycięcie w ekranie krzywej.

Jeśli aplikacja nie renderuje się od brzegu do brzegu, nie musisz nic robić do renderowania w bezpiecznym obszarze.

Jeśli aplikacja renderuje się od brzegu do krawędzi, możesz wybrać sposób jej renderowania w obrębie wycięć w ekranie. Możesz to zrobić za pomocą zasobów, Ustaw wartość android:windowLayoutInDisplayCutoutMode atrybutu dla motywu aplikacji lub w czasie działania. przez zmianę layoutInDisplayCutoutMode. .

Ponieważ rodzaje wycięć w ekranie w urządzeniach z systemem operacyjnym Android Automotive różnią się od tych na urządzeniach mobilnych, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT lub LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, które są zoptymalizowane pod kątem wycięcia w urządzeniach mobilnych. Zamiast tego: użyj LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER lub LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS aby zawsze unikać wycięcia lub zawsze wprowadzać je do wycięcia. Wybierając tę drugą opcję, Więcej informacji znajdziesz w sekcji o obsłudze wycięć w ekranie. na temat interfejsów API związanych z wycięciami w ekranie.

Jeśli aplikacja renderuje się w obszarze wycięcia w wyświetlaczu i chcesz, różnice w zachowaniu między systemem operacyjnym Android Automotive a systemem operacyjnym Android, patrz sekcja Wyłącz funkcje, aby uzyskać wskazówki, jeśli Twoja aplikacja je ustawia. działania w czasie działania, a w razie potrzeby korzystaj z zasobów alternatywnych aplikacja ustawia to zachowanie za pomocą plików zasobów.

Wyłącz funkcje

Jeśli udostępniasz istniejącą aplikację mobilną na system operacyjny Android Automotive, niektóre funkcje mogą być nieodpowiednie lub niedostępne. Dla: na przykład samochody zwykle nie mają dostępu do kamer. Dodatkowo tylko podzbiór Usług Google Play jest dostępny w systemie operacyjnym Android Automotive; zobacz Usługi Google Play dotyczące samochodów .

PackageManager.hasSystemFeature Interfejs API do wykrywania, czy aplikacja działa w systemie operacyjnym Android Automotive, sprawdzając dla wartości FEATURE_AUTOMOTIVE zgodnie z poniższym przykładem:

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 Twoja aplikacja ma też komponent Android Auto, możesz: użyj interfejsu API CarConnection z Biblioteka aplikacji na Androida do samochodu system operacyjny Android Automotive lub Android Auto albo nie jest połączony. do samochodu.

W przypadku trybu obraz w obrazie (PIP) postępuj zgodnie z sprawdzonych metod, by sprawdzić, czy i odpowiednio na nie zareagować.

Obsługa scenariuszy offline

Chociaż samochody są coraz częściej połączone z internetem, zalecamy aplikacje, aby działa bez połączenia z internetem, np. w tych przypadkach:

  • Użytkownicy mogą zrezygnować z mobilnej transmisji danych oferowanej w ramach subskrypcji od producenta samochodu.
  • Dostęp do mobilnej transmisji danych może być ograniczony na niektórych obszarach.
  • Samochody z nadajnikami Wi-Fi mogą znajdować się poza zasięgiem sieci Wi-Fi lub być może producent OEM wyłączyć Wi-Fi na rzecz sieci komórkowej.

Przygotuj się na takie sytuacje w aplikacji, płynnie pogarszając funkcje, które zależą od dostępu do internetu, np. oferując treści offline. Więcej informacji znajdziesz w sprawdzonych metodach optymalizacji .

Korzystanie z zasobów alternatywnych

Aby pomóc w dostosowaniu aplikacji do potrzeb samochodów, możesz użyć kwalifikatora zasobów car, aby podać zasoby alternatywne w samochodzie z systemem operacyjnym Android Automotive. Na przykład, jeśli używasz Zasoby wymiarów, które mają być przechowywane dopełnienia, można użyć większej wartości dla zbioru zasobów car, większe docelowe elementy dotykowe.

Dystrybucja aplikacji

Gdy przetestujesz aplikację pod kątem zgodności ze wskazówkami dotyczącymi jakości aplikacji samochodowych kategoria i spełniało kryteria kompilację systemu operacyjnego Android Automotive oraz kategorii, możesz opublikować ją na ścieżkach w wersji Automotive OS. Sklep Play. Zobacz Dystrybucja aplikacji na Androida w samochodach. .

Prześlij opinię o zaparkowanych aplikacjach

Jeśli napotkasz problem lub będziesz mieć prośbę o dodanie funkcji podczas tworzenia na system operacyjny Android Automotive, możesz zgłosić ją za pomocą Google Issue Tracker. Pamiętaj, aby w szablonie problemu podać wszystkie wymagane informacje. Przed podczas zgłaszania nowego problemu, sprawdź, czy nie został już uwzględniony na liście problemów. Ty mogą subskrybować i głosować na zgłoszenia, klikając gwiazdkę przy problemie w lokalizatora. Więcej informacji: Subskrybowanie problemu.

Tworzenie nowego numeru