Udostępniaj aplikację w pojazdach z Androidem Auto lub systemem operacyjnym Android Automotive. Używaj 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 na samochody może zapewnić użytkownikom możliwość płynnego połączenia ich życia cyfrowego z samochodami. Rozszerzając dostępność tych samych aplikacji na telefony na samochody, możesz poprawić wrażenia użytkowników. 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ć rozpraszanie uwagi, stosując sprawdzone metody, takie jak używanie poleceń głosowych i bardzo praktyczny projekt wizualny. Dzięki temu aplikacja do multimediów może wyświetlać kierowcy aktualne informacje tylko wtedy, gdy są one istotne, i wykorzystywać przewidywalne wzorce w przypadku typowych zadań.
Android Auto
Android Auto zapewnia zoptymalizowaną pod kątem kierowcy obsługę aplikacji użytkownikom, którzy mają telefon z Androidem z aplikacją Android Auto oraz kompatybilny samochód lub zamienny system stereo. Mogą korzystać z Twojej aplikacji bezpośrednio na wyświetlaczu samochodu, łącząc telefon. Aby umożliwić Androidowi Auto łączenie się z aplikacją na telefon, musisz utworzyć usługi, których Android Auto używa do wyświetlania kierowcy zoptymalizowanego interfejsu.
System operacyjny Android Automotive
Android Automotive OS to system multimedialno-rozrywkowy oparty na Androidzie, który jest wbudowany w pojazdy. System samochodu to samodzielne urządzenie z Androidem, które jest zoptymalizowane pod kątem jazdy. W przypadku systemu operacyjnego Android Automotive użytkownicy instalują 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 przypadku Androida Automotive OS możesz też tworzyć ekrany logowania i ustawień (do używania podczas parkowania) 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 strumieniowych transmisji wideo. Te aplikacje są tworzone za pomocą widoków lub biblioteki Jetpack Compose. Więcej informacji znajdziesz na stronach Tworzenie aplikacji do odtwarzania wideo 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 zasobów ze szczegółowymi wskazówkami.
Komponenty odtwarzania
Media3 oferuje kilka kluczowych komponentów do odtwarzania. Jeśli korzystasz z poprzednich bibliotek multimediów na Androidzie, klasy, z których składają się te komponenty, powinny być Ci znane.
Ten diagram pokazuje, jak te komponenty łączą się w typowych aplikacjach.
Więcej informacji znajdziesz w sekcji Komponenty odtwarzania.
Wdróż MediaLibraryService i MediaLibrarySession.
MediaLibraryService udostępnia standardowy interfejs API do obsługi biblioteki multimediów i umożliwia 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 interfejs bezpieczny dla kierowcy do biblioteki multimediów. Więcej informacji o wdrażaniu i używaniu
MediaLibraryService znajdziesz w artykule Udostępnianie treści za pomocą MediaLibraryService.
Do sterowania odtwarzaniem używaj sesji multimedialnej. Interfejs MediaSession API 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 i Korzystanie z MediaLibrarySession.
Sesja multimedialna powinna obsługiwać co najmniej te polecenia odtwarzacza:
W przewodniku Włączanie elementów sterujących odtwarzaniem znajdziesz informacje o tym, jak dostosować elementy sterujące odtwarzaniem w samochodzie.
Gdy Android Auto lub system operacyjny Android Automotive połączą się z Twoją aplikacją, poproszą o wyświetlenie biblioteki treści, co wywoła metodę wywołania zwrotnego onGetLibraryRoot(). Możesz szybko przywrócić główny element multimedialny, aby uzyskać 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 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 motoryzacyjne 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 informacje:
<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 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, wykonaj te czynności:
- W Android Studio kliknij Plik > Nowy > Nowy moduł.
- Kliknij kolejno Moduł motoryzacyjny i Dalej.
- Wpisz nazwę aplikacji lub 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 do swojej aplikacji.
W sekcji 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 (API na poziomie 28) lub nowszym, więc wybranie tej wartości spowoduje kierowanie na wszystkie kompatybilne samochody.
Wybierz Brak aktywności, a następnie kliknij Zakończ.
Po utworzeniu modułu w Android Studio otwórz 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, a także element uses-feature, który deklaruje obsługę systemu operacyjnego Android Automotive.
Pamiętaj, że w pliku manifestu nie zadeklarowano żadnych działań.
Jeśli wdrażasz ustawienia lub aktywności związane z logowaniem, dodaj je tutaj. Te działania są wywoływane przez system za pomocą jawnych intencji i są jedynymi działaniami, które deklarujesz w pliku manifestu aplikacji na system operacyjny Android Automotive.
Po dodaniu ustawień lub działań 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" zapewnia, że aplikacja nie będzie powodować konfliktów z dostępnymi funkcjami sprzętowymi na urządzeniach z 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 motoryzacyjne obsługiwane przez aplikację.
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ść następujące treści:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtry intencji
System operacyjny Android Automotive używa jawnych intencji do wywoływania aktywności w aplikacji do multimediów. Nie umieszczaj 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 są zwykle kierowane na telefon lub inne urządzenie mobilne. Zadeklaruj te działania 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 usługi, znajdziesz w przewodnikach technicznych dotyczących działań głosowych, zabezpieczeń przed rozproszeniem 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 multimedialnych w samochodach, dlatego musisz znać pewne wymagania dotyczące aplikacji wideo, które opisaliśmy w artykułach Tworzenie aplikacji na system operacyjny Android Automotive, która będzie działać po zaparkowaniu i Tworzenie aplikacji wideo dla systemu operacyjnego Android Automotive. Aby to zrobić:
Oznaczanie aplikacji jako aplikacji wideo
Aby wskazać, że aplikacja obsługuje wideo, 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 Twoja aplikacja obsługuje urządzenia z systemem operacyjnym Android Automotive, dodaj do pliku manifestu element
android.hardware.type.automotive <uses-feature>.
Więcej informacji o tym, czy ustawić atrybut android:required na "false" czy "true", znajdziesz w artykule Deklarowanie funkcji sprzętowej AAOS.
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>