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:
- W przypadku aplikacji wideo przeczytaj artykuł Oznaczanie aplikacji jako aplikacji wideo.
- W przypadku gier przeczytaj artykuł Oznaczanie aplikacji jako gry.
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.](https://developer.android.com/static/images/training/cars/aaos-curved.png?authuser=19&hl=pl)
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.