Udostępnij swoją aplikację w pojazdach z Androidem Auto lub systemem operacyjnym Android Automotive. Użyj jednej architektury aplikacji, która sprawdzi się w obu przypadkach, aby każdy użytkownik mógł korzystać z Twojej aplikacji.
Czym jest Android do samochodu?
Aplikacja do multimediów w samochodzie może umożliwiać użytkownikom płynne łączenie ich cyfrowego życia z samochodami. Udostępniając te same aplikacje na telefony w samochodach, zapewniasz użytkownikom lepsze wrażenia. Możesz to zrobić, integrując aplikację z Androidem Auto lub systemem operacyjnym Android Automotive.
Aplikacje na Androida do samochodów muszą przede wszystkim unikać rozpraszania uwagi kierowcy. Możesz zminimalizować czynniki rozpraszające uwagę, stosując sprawdzone metody, takie jak polecenia głosowe i bardzo praktyczny wygląd interfejsu. Dzięki temu aplikacja do multimediów może wyświetlać kierowcy aktualne informacje tylko wtedy, gdy są one istotne, i używać przewidywalnych wzorców w przypadku typowych zadań.
Android Auto
Android Auto zapewnia wrażenia użytkownika aplikacji zoptymalizowane pod kątem kierowcy dla użytkowników, którzy mają telefon z Androidem z aplikacją Android Auto i zgodny samochód lub akcesoryjny zestaw audio. Mogą korzystać z aplikacji bezpośrednio na wyświetlaczu samochodu po podłączeniu telefonu. Aby umożliwić Androidowi Auto połączenie z aplikacją na telefonie, musisz utworzyć usługi, których Android Auto używa do wyświetlania kierowcy interfejsu zoptymalizowanego pod kątem jazdy.
System operacyjny Android Automotive
System operacyjny Android Automotive to oparty na Androidzie system multimedialny, który jest wbudowany w pojazdy. System samochodu to samodzielne urządzenie z Androidem, które jest zoptymalizowane pod kątem jazdy. W systemie operacyjnym Android Automotive użytkownicy instalują aplikację bezpośrednio w samochodzie, a nie na telefonie.
Obsługiwane kategorie aplikacji
Aplikacje do multimediów umożliwiają użytkownikom przeglądanie i odtwarzanie muzyki, radia, audiobooków i innych treści audio w samochodzie. Więcej informacji znajdziesz w artykułach Tworzenie aplikacji do odtwarzania dźwięku w samochodach i Tworzenie aplikacji multimedialnych do samochodów.
Aplikacje do multimediów są tworzone za pomocą MediaLibraryService i MediaSession.
W systemie operacyjnym Android Automotive możesz też tworzyć ekrany logowania i ustawień (do używania podczas postoju) za pomocą widoków lub Compose.
Aplikacje wideo umożliwiają użytkownikom oglądanie filmów strumieniowych, gdy samochód jest zaparkowany. Głównym celem tych aplikacji jest wyświetlanie strumieniowych transmisji wideo. Te aplikacje są tworzone przy użyciu widoków lub Compose. Więcej informacji znajdziesz w artykułach Tworzenie aplikacji do odtwarzania filmów na system operacyjny Android Automotive i Tworzenie aplikacji wideo na system operacyjny Android Automotive.
Tworzenie aplikacji do odtwarzania dźwięku w samochodach
W tym przewodniku zakładamy, że masz już podstawową aplikację do odtwarzania multimediów. Jeśli nie, zacznij od artykułu Tworzenie podstawowej aplikacji odtwarzacza multimediów.
W tym przewodniku znajdziesz informacje o tym, co musisz zrobić, oraz linki do dodatkowych materiałów ze szczegółowymi wskazówkami.
Komponenty odtwarzania
Media3 zawiera kilka kluczowych komponentów do odtwarzania. Klasy, które składają się na te komponenty, są Ci znane, jeśli masz doświadczenie z poprzednimi bibliotekami multimediów na Androida.
Poniższy diagram pokazuje, jak te komponenty współdziałają w typowej aplikacji.
Więcej informacji znajdziesz w sekcji Komponenty odtwarzania.
Wdrażanie MediaLibraryService i MediaLibrarySession
MediaLibraryService udostępnia standardowy interfejs API, który umożliwia obsługę biblioteki multimediów i dostęp do niej.
Jest to wymagane podczas dodawania obsługi Androida Auto lub systemu operacyjnego Android Automotive do aplikacji do multimediów, ponieważ te platformy udostępniają własny, bezpieczny dla kierowców interfejs biblioteki multimediów. Więcej informacji o implementowaniu i używaniu MediaLibraryService znajdziesz w artykule Udostępnianie treści za pomocą MediaLibraryService.
Do elementów sterujących odtwarzaniem używaj sesji multimedialnej. Interfejs API MediaSession zapewnia uniwersalny sposób interakcji z odtwarzaczem audio lub wideo. Biblioteka Jetpack Media3 zawiera MediaLibrarySession, który rozszerza MediaSession, dodając interfejsy API do przeglądania treści.
Połączenie sesji multimedialnej z odtwarzaczem umożliwia aplikacji przekazywanie informacji o odtwarzaniu multimediów źródłom zewnętrznym i otrzymywanie poleceń odtwarzania ze źródeł zewnętrznych, takich jak Android Auto, system operacyjny Android Automotive czy Asystent Google. Więcej informacji znajdziesz w artykułach Kontrolowanie i reklamowanie odtwarzania za pomocą MediaSession i Korzystanie z MediaLibrarySession.
Sesja multimedialna powinna co najmniej deklarować obsługę tych poleceń odtwarzacza:
Przewodnik Włączanie elementów sterujących odtwarzaniem opisuje sposoby dostosowywania elementów sterujących odtwarzaniem w samochodach.
Gdy Android Auto lub system operacyjny Android Automotive łączą się z aplikacją, żądają wyświetlenia biblioteki treści, co wywołuje metodę wywołania zwrotnego onGetLibraryRoot(). Możesz szybko zwrócić element multimedialny z katalogu głównego, aby umożliwić dostęp do biblioteki. Metoda wywołania zwrotnego onGetChildren() jest wywoływana, gdy Android Auto lub system operacyjny Android Automotive próbuje przeglądać głębsze poziomy biblioteki treści.
Te platformy nakładają dodatkowe limity na strukturę biblioteki treści. Szczegółowe informacje o dostosowywaniu sposobu wyświetlania biblioteki treści znajdziesz w przewodniku Tworzenie usługi przeglądarki multimediów.
Deklarowanie obsługi Androida Auto
Aby zadeklarować, że aplikacja na telefon obsługuje Androida Auto, użyj tego wpisu w pliku manifestu:
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Ten wpis w pliku manifestu odnosi się do pliku XML, który deklaruje, jakie funkcje Automotive obsługuje Twoja aplikacja. Aby wskazać, że masz aplikację do multimediów, dodaj plik XML o nazwie automotive_app_desc.xml do katalogu res/xml/ w projekcie. Ten plik powinien zawierać te treści:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Deklarowanie obsługi systemu operacyjnego Android Automotive
Musisz utworzyć moduł samochodowy, ponieważ nie całą logikę aplikacji można udostępnić aplikacji samochodowej. Niektóre komponenty systemu operacyjnego Android Automotive, takie jak plik manifestu, mają wymagania dotyczące platformy. Utwórz moduł, który może przechowywać kod tych komponentów oddzielnie od innego kodu w projekcie, np. kodu używanego w aplikacji mobilnej.
Aby dodać moduł samochodowy do projektu, wykonaj te czynności:
- W Android Studio kliknij Plik > Nowy > Nowy moduł.
- Wybierz Moduł samochodowy, a następnie kliknij Dalej.
- Wpisz nazwę aplikacji lub biblioteki. Jest to nazwa aplikacji, którą użytkownicy widzą w systemie operacyjnym Android Automotive.
- Wpisz nazwę modułu.
- Dostosuj nazwę pakietu do swojej aplikacji.
W polu Minimum SDK (Minimalny pakiet SDK) wybierz API 28: Android 9.0 (Pie), a następnie kliknij Next (Dalej).
Wszystkie samochody obsługujące system operacyjny Android Automotive działają na Androidzie 9 (API na poziomie 28) lub nowszym, więc wybranie tej wartości spowoduje kierowanie na wszystkie zgodne samochody.
Wybierz Brak aktywności, a następnie kliknij Zakończ.
Po utworzeniu modułu w Android Studio otwórz plik AndroidManifest.xml w nowym module samochodowym:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
Element application zawiera standardowe informacje o aplikacji oraz element uses-feature, który deklaruje obsługę systemu operacyjnego Android Automotive.
Zwróć uwagę, że w pliku manifestu nie ma zadeklarowanych aktywności.
Jeśli wdrażasz aktywności związane z ustawieniami lub logowaniem, dodaj je tutaj. Te aktywności są wywoływane przez system za pomocą jawnych intencji i są jedynymi aktywnościami, które deklarujesz w pliku manifestu aplikacji na system operacyjny Android Automotive.
Po dodaniu ustawień lub aktywności związanych z logowaniem uzupełnij plik manifestu, ustawiając atrybut android:appCategory="audio" w elemencie application i dodając te elementy uses-feature:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:appCategory="audio"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
<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" />
</manifest>
Wyraźne ustawienie tych funkcji na required="false" gwarantuje, że aplikacja nie będzie powodować konfliktów z dostępnymi funkcjami sprzętowymi na urządzeniach z systemem Automotive OS.
Aby zadeklarować, że aplikacja obsługuje system operacyjny Android Automotive, użyj tego wpisu w pliku manifestu:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Ten wpis w pliku manifestu odnosi się do pliku XML, który deklaruje funkcje Automotive obsługiwane przez aplikację.
Aby wskazać, że masz aplikację do multimediów, dodaj plik XML o nazwie automotive_app_desc.xml do katalogu res/xml/ w projekcie. W tym pliku umieść te treści:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtry intencji
System operacyjny Android Automotive używa intencji jawnych do wywoływania aktywności w aplikacji do multimediów. Nie uwzględniaj w pliku manifestu żadnych aktywności, które mają filtry intencji CATEGORY_LAUNCHER lub ACTION_MAIN.
Działania takie jak w poniższym przykładzie zwykle dotyczą telefonu lub innego urządzenia mobilnego. Zadeklaruj te aktywności w module, który tworzy aplikację na telefon, a nie w module, który tworzy aplikację na system operacyjny Android Automotive.
<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>
Dalsze kroki
Teraz, gdy masz już aplikację na Androida Auto i system operacyjny Android Automotive, możesz podjąć dodatkowe kroki, aby zoptymalizować ją pod kątem bezpieczniejszego korzystania podczas jazdy. Więcej rekomendacji, które pomogą zapewnić bezpieczne i wygodne korzystanie z aplikacji, znajdziesz w przewodnikach technicznych dotyczących komend głosowych, zabezpieczeń przed rozpraszaniem uwagi i obsługi błędów.
Tworzenie aplikacji do odtwarzania filmów na system operacyjny Android Automotive
Aplikacje wideo są klasyfikowane oddzielnie od aplikacji do multimediów w samochodach, dlatego musisz pamiętać o pewnych wymaganiach dotyczących aplikacji wideo, które opisaliśmy w artykułach Tworzenie aplikacji do samochodów, które będą działać po zaparkowaniu i Tworzenie aplikacji wideo na system operacyjny Android Automotive. Aby to zrobić:
Oznaczanie aplikacji jako aplikacji wideo
Aby wskazać, że aplikacja obsługuje filmy, dodaj atrybut android:appCategory="video" do elementu <application> w pliku manifestu.
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Deklarowanie funkcji sprzętowej systemu operacyjnego Android Automotive
Aby zadeklarować, że aplikacja obsługuje urządzenia z systemem operacyjnym Android Automotive, dodaj do pliku manifestu element android.hardware.type.automotive <uses-feature>.
Wskazówki dotyczące tego, czy atrybut android:required ustawić na "false" czy "true", znajdziesz w sekcji Deklarowanie funkcji sprzętowej AAOS.
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>