Udostępniaj aplikację w pojazdach z Androidem Auto lub systemem operacyjnym Android Automotive. Używaj jednej 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 multimedialna na samochody może zapewnić użytkownikom możliwość płynnego połączenia ich życia cyfrowego 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 nie rozpraszać kierowcy. Możesz zminimalizować rozpraszanie uwagi, stosując sprawdzone metody, takie jak używanie poleceń głosowych i bardzo praktyczny projekt wizualny. W ten sposób aplikacja multimedialna 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 kierowcom zoptymalizowane pod kątem kierowcy korzystanie z aplikacji na telefonach z Androidem, na których jest zainstalowana aplikacja Android Auto, oraz w samochodach lub akcesoryjnych zestawach audio, które są z nią zgodne. 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 Androida Automotive OS 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 artykule Tworzenie aplikacji do odtwarzania dźwięku w samochodach. Więcej informacji znajdziesz też w artykule Tworzenie aplikacji multimedialnych na samochody.
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 filmów przesyłanych strumieniowo. Te aplikacje są tworzone za pomocą widoków lub Compose. Więcej informacji znajdziesz w artykule Tworzenie aplikacji do odtwarzania filmów na system operacyjny Android Automotive. Więcej informacji znajdziesz na stronie 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. Klasy, z których składają się te komponenty, są Ci znane, jeśli pracowałeś(-aś) już z poprzednimi bibliotekami multimediów na Androida.
Na diagramie poniżej pokazano, jak te komponenty łączą się w typowych aplikacjach.
Więcej informacji znajdziesz w artykule Komponenty odtwarzania.
Zaimplementuj 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, gdy dodajesz obsługę Androida Auto lub Androida Automotive OS do aplikacji multimedialnej, ponieważ te platformy udostępniają własny interfejs bezpieczny dla kierowcy w przypadku biblioteki multimediów. Więcej informacji o wdrażaniu i używaniu usługi
MediaLibraryService
znajdziesz w artykule Dostarczanie 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 reklamowanie odtwarzania multimediów na zewnątrz i otrzymywanie poleceń odtwarzania ze źródeł zewnętrznych, takich jak Android Auto, Android Automotive OS 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 Android Automotive OS połączą się z Twoją aplikacją, poproszą o wyświetlenie biblioteki treści, co spowoduje wywołanie metody zwrotnej onGetLibraryRoot()
. Możesz szybko przywrócić główny element multimedialny, aby uzyskać dostęp do biblioteki. onGetChildren()
Metoda wywołania zwrotnego jest wywoływana, gdy Android Auto lub
Android Automotive OS 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ę multimedialną, 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ł motoryzacyjny do projektu, wykonaj te czynności:
- W Android Studio kliknij File > New > New Module (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 reklam na wszystkie kompatybilne 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, 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 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 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"
gwarantuje, że aplikacja nie będzie powodować konfliktów z dostępnymi funkcjami sprzętowymi na urządzeniach z systemem operacyjnym Automotive.
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ę multimedialną, 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 działań w aplikacji do multimediów. Nie umieszczaj w pliku manifestu żadnych działań, 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 Androida Automotive OS, 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ą w samochodach klasyfikowane oddzielnie od aplikacji multimedialnych, dlatego musisz znać pewne wymagania dotyczące aplikacji wideo, które opisaliśmy w artykułach Tworzenie aplikacji na postój w samochodach i Tworzenie aplikacji wideo na system operacyjny Android Automotive. Postępuj zgodnie z tymi instrukcjami.
Oznaczanie aplikacji jako aplikacji wideo
Aby wskazać, że aplikacja obsługuje wideo, dodaj plik XML o nazwie
automotive_app_desc.xml
do katalogu res/xml/ w projekcie. W tym pliku umieść następującą zawartość:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
Następnie w elemencie application
pliku manifestu dodaj ten element:meta-data
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>