Przenieś swoją aplikację na pojazdy z Androidem Auto lub systemem operacyjnym Android Automotive. Użyj architektury aplikacji, która działa w obu przypadkach, aby każdy użytkownik mógł korzystać z Twojej aplikacji.
Czym jest Android do samochodu?
Aplikacja do multimediów do samochodu może umożliwić użytkownikom płynne połączenie ich cyfrowego życia z samochodem. Dzięki rozszerzeniu tych samych aplikacji na telefon, aby były dostępne w samochodach, możesz zapewnić lepsze wrażenia użytkownikom. Możesz to zrobić, integrując się z Androidem Auto lub systemem operacyjnym Android Automotive.
Aplikacje na Androida do samochodów muszą przede wszystkim unikać rozpraszania kierowcy. Możesz zminimalizować rozpraszanie, stosując sprawdzone metody, takie jak używanie poleceń głosowych i bardzo praktyczny projekt wizualny. W ten sposób aplikacja do multimediów może wyświetlać kierowcy aktualne informacje tylko wtedy, gdy są one istotne, i używać przewidywalnych wzorców do wykonywania typowych zadań.
Android Auto
Android Auto zapewnia użytkownikom, którzy mają telefon z Androidem i aplikację Android Auto oraz kompatybilny samochód lub akcesoryjny system audio, aplikację zoptymalizowaną pod kątem kierowcy. Mogą oni korzystać z Twojej aplikacji bezpośrednio na wyświetlaczu samochodu, łącząc telefon. Aby umożliwić Androidowi Auto łączenie się z aplikacją na telefon, utwórz usługi, których Android Auto używa do wyświetlania kierowcy interfejsu zoptymalizowanego pod kątem kierowcy.
System operacyjny Android Automotive
System operacyjny Android Automotive to system multimedialno-rozrywkowy oparty na Androidzie, który jest wbudowany w pojazdy. System samochodowy to samodzielne urządzenie z Androidem zoptymalizowane pod kątem jazdy. W przypadku systemu operacyjnego Android Automotive użytkownicy instalują Twoją aplikację bezpośrednio w samochodzie, a nie na telefonie.
Obsługiwane kategorie aplikacji
Aplikacje multimedialne 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 multimedialne są tworzone przy użyciu MediaLibraryService
i MediaSession.
W systemie operacyjnym Android Automotive możesz też tworzyć ekrany logowania i ustawień (do używania po zaparkowaniu) za pomocą widoków lub Compose.
Aplikacje wideo umożliwiają użytkownikom oglądanie filmów przesyłanych strumieniowo, gdy samochód jest zaparkowany. Głównym celem tych aplikacji jest wyświetlanie filmów przesyłanych strumieniowo. 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 z konkretnymi wskazówkami.
Komponenty odtwarzania
Media3 oferuje kilka kluczowych komponentów do obsługi przypadków użycia odtwarzania. Jeśli pracujesz z poprzednimi bibliotekami multimediów na Androida, klasy tworzące te komponenty są Ci znane.
Ten schemat pokazuje, jak te komponenty łączą się w typowej aplikacji.
Więcej informacji znajdziesz w artykule Komponenty odtwarzania.
Implementowanie MediaLibraryService i MediaLibrarySession
MediaLibraryService
udostępnia standardowy interfejs API do obsługi biblioteki multimediów i umożliwiania dostępu do niej.
Jest to wymagane podczas dodawania obsługi Androida Auto lub systemu operacyjnego Android Automotive do aplikacji multimedialnej, ponieważ te platformy udostępniają własny interfejs użytkownika bezpieczny dla kierowcy w przypadku biblioteki multimediów. Więcej informacji o implementowaniu i używaniu a
MediaLibraryService, znajdziesz w
artykule Obsługiwanie treści za pomocą MediaLibraryService.
Do sterowania odtwarzaniem używaj sesji multimedialnej. Interfejs API MediaSession zapewnia uniwersalny sposób interakcji z odtwarzaczem audio lub wideo. Biblioteka Jetpack Media3 zawiera MediaLibrarySession, która rozszerza MediaSession o 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 Sterowanie odtwarzaniem i reklamowanie go za pomocą MediaSession oraz Używanie MediaLibrarySession.
Sesja multimedialna powinna co najmniej deklarować obsługę tych poleceń odtwarzacza:
W przewodniku Włączanie elementów sterujących odtwarzaniem opisujemy, jak dostosować elementy sterujące odtwarzaniem w samochodach.
Gdy Android Auto lub system operacyjny Android Automotive połączy się z Twoją aplikacją, poprosi o wyświetlenie biblioteki treści, co spowoduje wywołanie metody zwrotnej onGetLibraryRoot(). Możesz szybko zwrócić główny element multimedialny, aby umożliwić dostęp do biblioteki. Metoda wywołania zwrotnego onGetChildren() jest wywoływana, gdy Android Auto lub system operacyjny Android Automotive próbują przeglądać głębsze poziomy biblioteki treści.
Te platformy nakładają dodatkowe ograniczenia 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 samochodowe obsługuje Twoja aplikacja. Aby wskazać, że masz aplikację do multimediów, dodaj do katalogu res/xml/ w projekcie plik XML o nazwie automotive_app_desc.xml. 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ę w aplikacji można udostępnić aplikacji samochodowej. Niektóre komponenty systemu operacyjnego Android Automotive, takie jak plik manifestu, mają wymagania specyficzne dla platformy. Utwórz moduł, który może oddzielić kod tych komponentów od innego kodu w projekcie, np. kodu używanego w aplikacji mobilnej.
Aby dodać moduł samochodowy do projektu:
- W Android Studio kliknij Plik > Nowy > Nowy moduł.
- Wybierz Moduł samochodowy, a potem kliknij Dalej.
- Wpisz Nazwę aplikacji/biblioteki. Jest to nazwa, którą użytkownicy widzą w przypadku Twojej aplikacji w systemie operacyjnym Android Automotive.
- Wpisz Nazwę modułu.
- Dostosuj Nazwę pakietu tak, aby pasowała do Twojej aplikacji.
W polu Minimalny pakiet SDK wybierz API 28: Android 9.0 (Pie), a potem kliknij Dalej.
Wszystkie samochody obsługujące system operacyjny Android Automotive działają na Androidzie 9 (poziom interfejsu API 28) lub nowszym, więc wybranie tej wartości spowoduje kierowanie na wszystkie zgodne samochody.
Wybierz Brak aktywności, a potem 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.
Pamiętaj, że w pliku manifestu nie ma zadeklarowanych aktywności.
Jeśli implementujesz ustawienia lub aktywności logowania, 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 logowania 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>
Jawne ustawienie tych funkcji na required="false" gwarantuje, że Twoja aplikacja nie będzie powodować konfliktu 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, jakie funkcje samochodowe obsługuje Twoja aplikacja.
Aby wskazać, że masz aplikację do multimediów, dodaj do katalogu res/xml/ w projekcie plik XML o nazwie automotive_app_desc.xml. W tym pliku umieść te treści:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtry intencji
System operacyjny Android Automotive używa jawnych intencji do wywoływania aktywności w aplikacji multimedialnej. W pliku manifestu nie umieszczaj żadnych aktywności, które mają
CATEGORY_LAUNCHER
lub ACTION_MAIN filtry intencji.
Aktywności takie jak w tym przykładzie zwykle są kierowane na telefon lub inne urządzenie mobilne. 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 aplikację na Androida Auto i system operacyjny Android Automotive, możesz wykonać dodatkowe czynności, aby zoptymalizować aplikację 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 działań głosowych, zabezpieczeń przed rozpraszaniem, i obsługi błędów.
Tworzenie aplikacji do odtwarzania filmów na system operacyjny Android Automotive
Ponieważ aplikacje wideo są w samochodach klasyfikowane oddzielnie od aplikacji multimedialnych, musisz znać niektóre wymagania dotyczące aplikacji wideo, które opisujemy w artykułach Tworzenie aplikacji na system operacyjny Android Automotive, które działają po zaparkowaniu i Tworzenie aplikacji wideo na system operacyjny Android Automotive. Aby to zrobić:
Oznaczanie aplikacji jako aplikacji wideo
Aby wskazać, że Twoja aplikacja obsługuje filmy, dodaj atrybut
android:appCategory="video" do <application>
elementu w pliku manifestu.
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Deklarowanie funkcji sprzętowej systemu operacyjnego Android Automotive
Aby zadeklarować, że Twoja 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 ustawiania atrybutu android:required na wartość "false" lub
"true" znajdziesz w artykule
Deklarowanie funkcji sprzętowej systemu operacyjnego Android Automotive.
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>