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 wysłać tę samą aplikację do samochodów co inne dużych ekranów z kilkoma drobnymi zmianami.

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, postępuj zgodnie z instrukcjami czynności opisane w artykule 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ł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ą nie być dostępne na systemie Android Automotive. Na przykład niektóre interfejsy API Usług Google Play są niedostępne na Androidzie. Automotive OS. Zobacz sekcję Wyłączanie funkcji. .

Konfigurowanie plików manifestu aplikacji

Aby kierować aplikację na system operacyjny Android Automotive, musisz uwzględnić w niej 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ą one poddawane ręcznej weryfikacji, aby zapewnić ich bezpieczeństwo podczas korzystania 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ę na urządzeniach samochodowych i niesamochodowych, musisz wygenerować co najmniej 2 wersje aplikacji: jedną na potrzeby urządzeń samochodowych, a drugą na potrzeby urządzeń mobilnych. Więcej informacji aby dowiedzieć się, jak utworzyć te oddzielne smaki, zapoznaj się z dokumentacją:

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

Zamiast używać osobnych smaków, możesz użyć osobnego pakietu nazwy mobilnych i motorowych plików APK lub pakietów aplikacji. Aby poznać zalety i wady obu tych metod, zapoznaj się z nazwami pakietów w przewodniku dla deweloperów aplikacji multimedialnych.

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"/>

Wyraźne ustawienie tych funkcji jako niewymaganych pomaga zapewnić, że aplikacja nie będzie wchodzić w konflikt z dostępnymi funkcjami sprzętowymi 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 aplikacja jest dostępna tylko podczas parkowania, nie uwzględniaj w żadnym elemencie <activity> w pliku manifestu elementu <meta-data>:

<!-- 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, kategorie filmów i gier mają dodatkowe wymagania:

Optymalizacja 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 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 optymalizacja aplikacji pod kątem dużych ekranów przynosi korzyści także użytkownikom w samochodach.

Szczegółowe informacje o optymalizowaniu wyświetlania na dużych ekranach znajdziesz w poradnikach Obsługa różnych rozmiarów ekranówPrzekształcanie interfejsu na układy elastyczne. Możesz też zaczerpnąć inspiracji i poradniki dotyczące projektowania w galeriach multimediówgier.

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 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 wkładkami okiennymi i wycięciami w ekranie

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

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 Twoja aplikacja wykonuje któreś z tych działań, zapoznaj się z podrozdziałami poniżej, aby dowiedzieć się, jak sprawić, aby działała prawidłowo 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. 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ąć tryb kompleksowy . Na przykład, uniemożliwiając aplikacjom ukrywanie pasków systemowych, producenci 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 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ć .

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 wyświetla się od krawędzi do krawędzi, sprawdź, czy za paskami systemowymi wyświetlane są tylko treści niekrytyczne. 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 aplikacja zajmuje cały ekran, nie zakładaj rozmiaru, liczby, typu ani lokalizacji pasków systemu. Zamiast tego do układania użyj interfejsów API wstawienia okien jej zawartości względem pasków systemowych. 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. 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 wyświetlaczy prostokątnych niektóre pojazdy mogą mieć ekrany o nieregularnym kształcie, jak na rysunku 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 zakrzywionym po prawej stronie. Zielony obszar to bezpieczny prostokąt, który nie zachodzi na ograniczający obszar wyświetlania krzywej.

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

Jeśli Twoja aplikacja jest renderowana od krawędzi do krawędzi, możesz wybrać, jak ma się zachowywać w przypadku 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 wartości LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER lub LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS, aby zawsze unikać lub zawsze wchodzić w wycięcie. 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łączanie funkcji

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 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.hasSystemFeatureAPI, 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 Android Automotive czy Android Auto, albo czy w ogóle nie jest połączona z samochodem.

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

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

  • 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 modułami 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 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

Po przetestowaniu aplikacji pod kątem zgodności ze wskazówkami dotyczącymi jakości aplikacji na potrzeby samochodów w danej kategorii i utworzeniu wersji na system operacyjny Android Automotive z koniecznymi zmianami dla danej kategorii możesz opublikować ją w Sklepie Play na ścieżce dla systemu operacyjnego Automotive. Więcej informacji o procesie publikowania znajdziesz w artykule Udostępnianie aplikacji na Androida w samochodach.

Przesyłanie opinii 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 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: Subskrybowanie problemu.

Tworzenie nowego numeru