Udostępnij swoją aplikację do multimediów na Androidzie w samochodach

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.

Różne komponenty aplikacji multimedialnej korzystającej z Media3 łączą się ze sobą na kilka prostych sposobów dzięki wspólnym interfejsom i klasom.
Ilustracja 1. Komponenty aplikacji multimedialnej

Więcej informacji znajdziesz w artykule Komponenty odtwarzania.

Zaimplementuj MediaLibraryServiceMediaLibrarySession.

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ą MediaSessionKorzystanie 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:

  1. W Android Studio kliknij File > New > New Module (Plik > Nowy > Nowy moduł).
  2. Kliknij kolejno Moduł motoryzacyjnyDalej.
  3. Wpisz nazwę aplikacji lub biblioteki. Jest to nazwa, którą użytkownicy widzą w przypadku Twojej aplikacji w systemie operacyjnym Android Automotive.
  4. Wpisz nazwę modułu.
  5. Dostosuj nazwę pakietu do swojej aplikacji.
  6. 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.

  7. 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 uwagiobsł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 samochodachTworzenie 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"/>