Udostępniaj aplikację w pojazdach z Androidem Auto lub Androidem Automotive. Użyj jednej architektury aplikacji, która działa w obu przypadkach, aby każdy użytkownik mógł korzystać z Twojej aplikacji.
Co to jest Android do samochodu?
Aplikacja do multimediów dla samochodów może umożliwiać użytkownikom bezproblemowe łączenie ich życia cyfrowego z samochodami. Rozszerzając dostępność tych samych aplikacji na telefon w samochodach, zwiększasz wygodę użytkowników. Możesz to zrobić, integrując aplikację z Androidem Auto lub systemem operacyjnym Android Automotive.
Aplikacje na Androida przeznaczone do użytku w samochodach muszą przede wszystkim zapobiegać rozpraszaniu uwagi kierowcy. Możesz ograniczyć rozpraszanie uwagi, stosując sprawdzone metody, takie jak używanie poleceń głosowych i bardzo praktyczny wygląd strony. Dzięki temu aplikacja do obsługi multimediów może wyświetlać kierowcy aktualne informacje tylko wtedy, gdy są one istotne, oraz używać przewidywalnych wzorów w przypadku typowych zadań.
Android Auto
Android Auto zapewnia użytkownikom telefonów z Androidem, na których zainstalowana jest aplikacja Android Auto, zoptymalizowane pod kątem kierowcy aplikacje oraz zgodny samochód lub zamienny zestaw audio. Po podłączeniu telefonu mogą korzystać z aplikacji bezpośrednio na wyświetlaczu samochodowym. Umożliwiasz Androidowi Auto połączenie z aplikacją na telefonie, tworząc usługi, których Android Auto używa do wyświetlania kierowcy interfejsu zoptymalizowanego pod kątem kierowcy.
System operacyjny Android Automotive
Android Automotive to system multimedialny oparty na Androidzie, który jest wbudowany w pojazdach. System samochodu to samodzielne urządzenie z Androidem, które jest zoptymalizowane pod kątem jazdy. W systemie operacyjnym Android Automotive użytkownicy mogą instalować 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 artykule Tworzenie aplikacji do odtwarzania dźwięku w samochodach. Więcej informacji znajdziesz też na stronie Tworzenie aplikacji multimedialnych na samochody.
Aplikacje multimedialne są tworzone za pomocą MediaLibraryService
i MediaSession
.
W systemie operacyjnym Android Automotive możesz też tworzyć ekrany logowania i ustawień (do użytku podczas parkowania) za pomocą widoków lub Compose.
Aplikacje do oglądania filmów umożliwiają użytkownikom oglądanie strumieniowych filmów podczas parkowania samochodu. Głównym celem tych aplikacji jest wyświetlanie strumieniowych filmów. Aplikacje te tworzy się przy użyciu widoków lub tworzenia wiadomości. Więcej informacji znajdziesz na stronie 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 tworzenia podstawowej aplikacji odtwarzacza multimediów.
Ten przewodnik zawiera informacje o tym, co należy zrobić, w tym linki do dodatkowych zasobów z dokładnymi wskazówkami.
Komponenty odtwarzania
Media3 oferuje kilka kluczowych komponentów do zastosowań odtwarzania. Jeśli pracowałeś(-aś) już z poprzednimi bibliotekami multimediów Androida, klasy, które tworzą te komponenty, powinny być Ci znane.
Ten diagram pokazuje, jak te komponenty współpracują ze sobą w typowej aplikacji.
Więcej informacji znajdziesz w artykule Składniki odtwarzania.
Wdróż MediaLibraryService
i MediaLibrarySession
MediaLibraryService
zapewnia standardowy interfejs API, który umożliwia wyświetlanie treści z biblioteki multimediów i dostęp do niej.
Jest to wymagane, gdy do swojej aplikacji do multimediów dodajesz obsługę Androida Auto lub Androida Automotive, ponieważ te platformy udostępniają własne interfejsy użytkownika, które są bezpieczne dla kierowcy. 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żyj sesji multimediów. Interfejs MediaSession
API zapewnia uniwersalny sposób interakcji z odtwarzaczem audio lub wideo. Biblioteka Jetpack Media3 zawiera interfejs MediaLibrarySession
, który rozszerza interfejs MediaSession
o interfejsy API przeglądania treści.
Połączenie sesji multimediów z odtwarzaczem umożliwia aplikacji wyświetlanie informacji o odtwarzaniu multimediów na zewnątrz i odbieranie poleceń odtwarzania z zewnętrznych źródeł, 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 oraz Korzystanie z MediaLibrarySession.
Sesja multimedialna powinna deklarować obsługę co najmniej tych poleceń odtwarzacza:
W przewodniku Włączanie elementów sterujących odtwarzaniem znajdziesz informacje o tym, jak możesz dostosować elementy sterujące odtwarzaniem w samochodach.
Gdy Android Auto lub system operacyjny Android Automotive łączą się z Twoją aplikacją, żądają wyświetlenia biblioteki treści, co aktywuje metodę wywołania zwrotnego onGetLibraryRoot()
. Możesz szybko zwrócić element multimediów na poziomie katalogu, 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 egzekwują dodatkowe ograniczenia dotyczące struktury biblioteki treści. Szczegółowe informacje o dostosowywaniu sposobu wyświetlania biblioteki treści znajdziesz w przewodniku Tworzenie usługi przeglądarki multimediów.
Zadeklaruj, że obsługujesz Androida Auto
Użyj tego wpisu w pliku manifestu, aby zadeklarować, że Twoja aplikacja na telefon obsługuje Androida Auto:
<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 z deklaracją funkcji motoryzacyjnych obsługiwanych przez Twoją aplikację. 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ł motoryzacyjny, ponieważ nie wszystkie funkcje logiczne aplikacji mogą być udostępniane aplikacji motoryzacyjnej. Niektóre komponenty systemu operacyjnego Android Automotive, takie jak plik manifestu, mają wymagania związane z konkretną platformą. 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:
- W Android Studio kliknij Plik > Nowy > Nowy moduł.
- Kliknij kolejno Moduł motoryzacyjny i Dalej.
- Wpisz nazwę aplikacji lub biblioteki. To nazwa, którą użytkownicy widzą w aplikacji w systemie operacyjnym Android Automotive.
- Wpisz nazwę modułu.
- Dostosuj nazwę pakietu tak, aby pasowała do Twojej 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 (poziom interfejsu API 28) lub nowszym, więc wybór tej wartości spowoduje ukierunkowanie reklam na wszystkie zgodne 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 oraz element uses-feature
deklarujący obsługę systemu operacyjnego Android Automotive. Pamiętaj, że w pliku manifestu nie ma deklarowanych aktywności.
Jeśli wdrożono aktywności związane z ustawieniami lub logowaniem, dodaj je tutaj. Aktywności te są wywoływane przez system za pomocą wyraźnych intencji i są to jedyne działania zadeklarowane w pliku manifestu aplikacji na system operacyjny Android Automotive.
Po dodaniu ustawień lub działań związanych z logowaniem się 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>
Jednoznaczne ustawienie tych funkcji na required="false"
sprawi, że aplikacja nie będzie kolidować z funkcjami sprzętowymi dostępnymi 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 samochodowe obsługiwane przez aplikację.
Aby wskazać, że masz aplikację multimedialną, dodaj plik XML o nazwie
automotive_app_desc.xml
do katalogu res/xml/
w projekcie. Umieść w tym pliku te treści:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Filtry intencji
System operacyjny Android Automotive używa jawnych intencji do uruchamiania działań w aplikacji do multimediów. Nie dodawaj do pliku manifestu żadnych działań z filtrami intencji CATEGORY_LAUNCHER
lub ACTION_MAIN
.
Działania takie jak poniżej są zwykle kierowane na telefon lub inne urządzenie mobilne. Zadeklaruj te czynnoś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
Skoro masz już aplikację na Androida Auto i system operacyjny Android Automotive, możesz chcieć podjąć dodatkowe działania, aby zoptymalizować aplikację, aby była bezpieczniejsza podczas jazdy. Więcej zaleceń, które pomogą Ci zadbać o bezpieczeństwo i wygodę użytkowników, znajdziesz w przewodnikach technicznych dotyczących komend głosowych, środków ochrony przed rozpraszaniem uwagi i obsługi błędów.
Tworzenie aplikacji do odtwarzania filmów na system operacyjny Android Automotive
Aplikacje wideo są klasyfikowane niezależnie od aplikacji do multimediów w samochodach, dlatego musisz znać konkretne wymagania dotyczące takich aplikacji. Opisaliśmy je w artykułach Tworzenie aplikacji zaparkowanych na system operacyjny Android Automotive i Tworzenie aplikacji wideo na system operacyjny Android Automotive. Musisz postępować zgodnie z tymi instrukcjami.
.Oznaczanie aplikacji jako aplikacji do oglądania filmów
Aby wskazać, że Twoja aplikacja obsługuje filmy, dodaj do katalogu res/xml/ w projekcie plik XML o nazwie automotive_app_desc.xml
. W tym pliku umieść:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
Następnie w elemencie application
w pliku manifestu dodaj element meta-data
, który odwołuje się do pliku XML:
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>