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

Udostępnij swoją aplikację w samochodach z systemem Android Auto lub Android Automotive. Używaj jednej architektury aplikacji, która sprawdza się w obu przypadkach, aby każdy użytkownik mógł z niej korzystać.

Co to jest Android for Cars?

Aplikacja do multimediów dla samochodów umożliwia użytkownikom bezproblemowe łączenie się z samochodami w cyfrowym świecie. Rozszerzając dostępność tych samych aplikacji na telefon w samochodach, zwiększasz wygodę użytkowników. W tym celu możesz zintegrować Androida Auto lub system operacyjny Android Automotive.

Aplikacje na Androida dla samochodów muszą przede wszystkim zapobiegać rozpraszaniu kierowcy. Możesz ograniczyć ten błąd, 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ą istotne, i korzystać z przewidywalnych wzorców w przypadku typowych zadań.

Android Auto

Android Auto to aplikacja zoptymalizowana pod kątem kierowcy, która jest przeznaczona dla użytkowników, którzy mają telefon z Androidem i aplikacją Android Auto oraz zgodny samochód lub system stereo. Dziecko może używać Twojej aplikacji bezpośrednio na wyświetlaczu w samochodzie, gdy podłączysz telefon. Aby umożliwić Androidowi Auto łączenie się z aplikacją na telefon, możesz utworzyć usługi, których Android Auto będzie używać do wyświetlania w kierowcy interfejsu zoptymalizowanego pod kątem kierowcy.

System operacyjny Android Automotive

System operacyjny Android Automotive to działający w pojazdach system multimedialny z Androidem. System w samochodzie to autonomiczne urządzenie z Androidem zoptymalizowane do jazdy. W systemie operacyjnym Android Automotive użytkownicy instalują Twoją aplikację bezpośrednio w samochodzie, a nie na telefonie.

Obsługiwane kategorie aplikacji

Aplikacje multimedialne pozwalają użytkownikom przeglądać i odtwarzać w samochodzie muzykę, radio, audiobooki i inne materiały audio. Więcej informacji znajdziesz w artykule Tworzenie aplikacji do odtwarzania dźwięku w samochodach. Więcej informacji znajdziesz w artykule o tworzeniu aplikacji multimedialnych do samochodu.

Aplikacje multimedialne tworzy się za pomocą języków MediaLibraryService i MediaSession. W systemie operacyjnym Android Automotive możesz też tworzyć ekrany logowania i ustawień (do użytku po zaparkowaniu) za pomocą widoków lub tworzenia.

Aplikacje wideo pozwalają użytkownikom oglądać filmy przesyłane strumieniowo, gdy samochód jest zaparkowany. Głównym przeznaczeniem tych aplikacji jest wyświetlanie strumieniowych transmisji wideo. Aplikacje te tworzy się za pomocą widoków danych lub tworzenia wiadomości. Więcej informacji znajdziesz w artykule o tworzeniu aplikacji do odtwarzania filmów na system operacyjny Android Automotive. Więcej informacji znajdziesz w artykule o tworzeniu 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 go nie masz, zapoznaj się z artykułem Tworzenie podstawowej aplikacji odtwarzacza multimediów.

Ten przewodnik zawiera informacje o tym, co musisz zrobić, w tym linki do dodatkowych materiałów z konkretnymi wskazówkami.

Komponenty odtwarzania

Media3 obejmuje kilka kluczowych komponentów związanych z odtwarzaniem. Klasy tworzące te komponenty są Ci znane, jeśli zdarzyło Ci się już pracować z wcześniejszymi bibliotekami multimediów na Androida.

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

Różne komponenty aplikacji do multimediów, która korzysta z Media3, łączą się ze sobą na kilka prostych sposobów dzięki współdzieleniu interfejsów i klas.
Ilustracja 1.: komponenty aplikacji do multimediów

Więcej informacji znajdziesz w artykule o komponentach odtwarzania.

Wdróż MediaLibraryService i MediaLibrarySession

MediaLibraryService ma standardowy interfejs API, który umożliwia wyświetlanie treści i umożliwia dostęp do biblioteki multimediów. Jest to wymagane przy dodawaniu do aplikacji do multimediów obsługi Androida Auto lub Androida Automotive, ponieważ platformy te oferują własny, bezpieczny dla kierowcy interfejs do biblioteki multimediów. Więcej informacji o implementowaniu i używaniu właściwości MediaLibraryService znajdziesz w artykule o udostępnianiu treści przy użyciu MediaLibraryService.

Do sterowania odtwarzaniem użyj sesji multimediów. Interfejs MediaSession API zapewnia uniwersalny sposób interakcji z odtwarzaczem audio i wideo. Biblioteka Jetpack Media3 zawiera komponent MediaLibrarySession, który rozszerza zakres MediaSession o dodawanie interfejsów API do przeglądania treści.

Połączenie sesji multimediów z odtwarzaczem umożliwia aplikacji reklamowanie odtwarzania multimediów na zewnątrz i odbieranie 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ą sesji MediaSession oraz Używanie MediaLibrarySession.

Sesja multimediów powinna co najmniej zadeklarować obsługę tych poleceń odtwarzacza:

Sposoby dostosowywania elementów sterujących odtwarzaniem w samochodach znajdziesz w przewodniku Włączanie elementów sterujących odtwarzaniem.

Gdy Android Auto lub system operacyjny Android Automotive połączy się z Twoją aplikacją, poprosi o wyświetlenie biblioteki treści, co spowoduje uruchomienie metody wywołania zwrotnego onGetLibraryRoot(). Możesz szybko zwrócić główny element multimedialny, aby zezwolić na dostęp do biblioteki. Metoda wywołania zwrotnego onGetChildren() jest wywoływana, gdy system operacyjny Android Auto lub Android Automotive próbuje przeglądać niższe poziomy w bibliotece treści.

Platformy te egzekwują dodatkowe ograniczenia struktury biblioteki treści. Szczegółowe informacje o dostosowywaniu sposobu wyświetlania biblioteki treści znajdziesz w przewodniku Tworzenie 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 samochodowych obsługiwanych przez Twoją aplikację. 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ć następujące treści:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Deklarowanie obsługi systemu operacyjnego Android Automotive

Musisz utworzyć moduł motoryzacyjny, ponieważ nie wszystkie funkcje logiczne Twojej aplikacji można udostępnić aplikacji motoryzacyjnej. Niektóre komponenty systemu operacyjnego Android Automotive, np. plik manifestu, mają wymagania typowe dla danej platformy. Utwórz moduł, który oddziela 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. Wybierz Automotive Module (Moduł motoryzacyjny) i kliknij Next (Dalej).
  3. Wpisz nazwę aplikacji/biblioteki. Taką nazwę zobaczą użytkownicy Twojej aplikacji w systemie operacyjnym Android Automotive.
  4. Wypełnij pole Nazwa modułu.
  5. Zmień Nazwę pakietu, by pasowała do Twojej aplikacji.
  6. Wybierz API 28: Android 9.0 (Pie) jako Minimalny pakiet SDK i kliknij Dalej.

    Wszystkie samochody obsługujące system operacyjny Android Automotive działają na Androidzie 9 (poziom interfejsu API 28) lub wyższym, więc wybranie tej wartości dotyczy wszystkich zgodnych samochodów.

  7. Wybierz Brak aktywności, a następnie kliknij Zakończ.

Po utworzeniu modułu w Android Studio otwórz AndroidManifest.xml w nowym module Automotive:

<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. Zwróć uwagę, że w pliku manifestu nie ma zadeklarowanych aktywności.

Jeśli wdrożysz ustawienia lub aktywność związaną z logowaniem, dodaj je tutaj. Te działania są wywoływane przez system na podstawie wyraźnych intencji i są jedynymi działaniami deklarowanymi w pliku manifestu aplikacji na Androida Automotive.

Po dodaniu ustawień lub aktywności związanej 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" sprawia, że aplikacja nie koliduje z dostępnymi funkcjami sprzętowymi dostępnymi na urządzeniach z systemem operacyjnym Automotive.

Aby zadeklarować, że Twoja 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 Twoją aplikację.

Aby wskazać, że masz aplikację do multimediów, dodaj plik XML o nazwie automotive_app_desc.xml do katalogu res/xml/ w projekcie. Umieść w tym pliku te elementy:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Filtry intencji

System operacyjny Android Automotive używa jawnych intencji do aktywowania działań w aplikacji do multimediów. Nie umieszczaj w pliku manifestu żadnych aktywności z filtrami 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. Wyrejestruj je w module, który tworzy aplikację na telefon, a nie w module tworzenia aplikacji 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 czynności

Skoro masz już aplikację na Androida Auto i system operacyjny Android Automotive, możesz wykonać dodatkowe czynności, aby zoptymalizować ją i bezpieczniej z niej korzystać podczas jazdy. Więcej zaleceń, które pomogą Ci zadbać o bezpieczeństwo i wygodę użytkownika, 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 multimedialnych w samochodach, dlatego musisz znać pewne wymagania dotyczące aplikacji wideo opisane w artykułach Tworzenie zaparkowanych aplikacji na system operacyjny Android Automotive i Tworzenie aplikacji wideo na system operacyjny Android Automotive. Musisz skorzystać z podanych niżej instrukcji.

Oznaczanie aplikacji jako aplikacji wideo

Aby wskazać, że aplikacja obsługuje treści wideo, dodaj plik XML o nazwie automotive_app_desc.xml do katalogu res/xml/ w projekcie. Uwzględnij w nim te elementy:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

Następnie w elemencie application pliku manifestu dodaj ten element meta-data odwołujący się do pliku XML:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>