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

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.

Czym jest Android do samochodu?

Aplikacja multimedialna do samochodów może umożliwiać użytkownikom płynne przełączanie się między życiem cyfrowym a samochodem. Udostępniając te same aplikacje na telefony i w samochodach, zapewnisz użytkownikom lepsze wrażenia. 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ć rozpraszające czynniki, stosując sprawdzone metody, takie jak używanie poleceń głosowych i praktyczny projekt wizualny. 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 instalują aplikację bezpośrednio w samochodzie, a nie na telefonach.

Obsługiwane kategorie aplikacji

Aplikacje multimedialne umożliwiają przeglądanie i odtwarzanie muzyki, radia, audiobooków i innych treści audio w samochodzie. Więcej informacji znajdziesz w artykule o tworzeniu aplikacji do odtwarzania dźwięku w samochodach. Więcej informacji znajdziesz w artykule Tworzenie aplikacji multimedialnych dla samochodów.

Aplikacje multimedialne są tworzone za pomocą MediaLibraryService i MediaSession. W systemie operacyjnym Android Automotive możesz też utworzyć ekrany logowania i ustawień (do użytku po zaparkowaniu) za pomocą widoków lub tworzenia wiadomości.

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. Te aplikacje są tworzone za pomocą widoków lub funkcji Compose. Więcej informacji znajdziesz w artykule o tworzeniu 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.

Poniższy diagram pokazuje, jak te komponenty łączą się ze sobą w typowej aplikacji.

Różne komponenty aplikacji multimedialnej, która korzysta z Media3, są ze sobą połączone na kilka prostych sposobów dzięki temu, że współdzielą interfejsy i klasy.
Rysunek 1.: Komponenty aplikacji multimedialnej

Więcej informacji znajdziesz w artykule o komponentach odtwarzania.

Wdróż MediaLibraryServiceMediaLibrarySession

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 implementowaniu i używaniu obiektu MediaLibraryService znajdziesz w artykule Udostępnianie treści przy użyciu usługi 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 multimediów powinna zawierać przynajmniej zadeklarowanie obsługi 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 aplikacją, wysyłają żądanie wyświetlenia biblioteki treści, co powoduje wywołanie metody onGetLibraryRoot(). Aby umożliwić dostęp do biblioteki, możesz szybko zwrócić główny element multimedialny. 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 narzucają 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.

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 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ł samochodowy, ponieważ nie wszystkie elementy logiki aplikacji mogą być udostępniane aplikacji samochodowej. Niektóre komponenty systemu operacyjnego Android Automotive, takie jak plik manifestu, mają wymagania specyficzne dla platformy. Utwórz moduł, w którym kod tych komponentów będzie oddzielony od pozostałego kodu w projekcie, np. kodu używanego w aplikacji mobilnej.

Aby dodać moduł samochodowy do projektu:

  1. W Android Studio kliknij Plik > Nowy > Nowy moduł.
  2. Kliknij kolejno Moduł motoryzacyjnyDalej.
  3. Wpisz nazwę aplikacji lub biblioteki. To nazwa, którą użytkownicy widzą w aplikacji w systemie operacyjnym Android Automotive.
  4. Wpisz nazwę modułu.
  5. Dostosuj nazwę pakietu tak, aby pasowała do Twojej 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 mają system Android 9 (poziom interfejsu API 28) lub nowszy, więc wybranie tej wartości powoduje kierowanie reklam na wszystkie zgodne samochody.

  7. Wybierz Brak aktywności i 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. Te czynności są wywoływane przez system za pomocą jawnych intencji i są jedynymi czynnościami deklarowanymi 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>

Wyraźne ustawienie tych funkcji na required="false" zapewnia, że aplikacja nie będzie wchodzić w konflikt z dostępnymi funkcjami sprzętowymi w urządzeniach z systemem 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 rekomendacji dotyczących zapewnienia użytkownikom bezpiecznego i wygodnego korzystania z urządzenia znajdziesz w poradnikach technicznych dotyczących działań głosowych, zabezpieczeń przed rozpraszaniem uwagiobsł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"/>