Medien-App auf Android für Autos erweitern

Stellen Sie Ihre App für Fahrzeuge bereit, auf denen Android Auto oder Android Automotive OS ausgeführt wird. Verwenden Sie eine Anwendungsarchitektur, die für beide Fälle geeignet ist, damit alle Nutzer Ihre Anwendung nutzen können.

Was ist Android für Autos?

Mit einer Medien-App für Autos können Nutzer ihr digitales Leben nahtlos mit ihren Autos verbinden. Indem Sie die gleichen Apps für Smartphones auch für Autos verfügbar machen, schaffen Sie eine bessere Nutzererfahrung. Dazu kannst du die App in Android Auto oder Android Automotive OS einbinden.

Android-Apps für Autos müssen die Ablenkung des Fahrers vor allem vermeiden. Sie können Ablenkungen minimieren, indem Sie Best Practices wie die Verwendung von Sprachbefehlen und ein sehr praktisches visuelles Design anwenden. Auf diese Weise kann Ihre Medien-App dem Fahrer nur dann zeitnahe Informationen anzeigen, wenn diese relevant sind, und vorhersehbare Muster für gängige Aufgaben verwenden.

Android Auto

Android Auto bietet eine für Nutzer optimierte App-Nutzung mit einem Android-Smartphone mit der Android Auto App und einer kompatiblen Auto- oder Aftermarket-Musikanlage. Sie können Ihre App direkt auf dem Display ihres Autos verwenden, indem sie ihr Smartphone verbinden. Damit Android Auto eine Verbindung zu Ihrer Smartphone-App herstellen kann, erstellen Sie Dienste, über die Android Auto eine für den Fahrer optimierte Oberfläche anzeigt.

Android Automotive OS

Android Automotive OS ist ein Android-basiertes Infotainmentsystem, das in Fahrzeuge integriert ist. Das System ist ein eigenständiges Android-Gerät, das für das Fahren optimiert ist. Mit Android Automotive OS installieren Nutzer deine App direkt im Auto statt auf dem Smartphone.

Unterstützte App-Kategorien

Mit Medien-Apps können Nutzer im Auto Musik, Radio, Hörbücher und andere Audioinhalte suchen und abspielen. Weitere Informationen finden Sie unter Apps zur Audiowiedergabe in Autos entwickeln. Weitere Informationen finden Sie auch unter Medien-Apps für Autos erstellen.

Medien-Apps werden mit MediaLibraryService und MediaSession erstellt. Unter Android Automotive können Sie auch Anmelde- und Einstellungsbildschirme mit Ansichten oder Schreiben erstellen (für die Nutzung während des Parkens).

Mit Video-Apps können Nutzer sich gestreamte Videos ansehen, während das Auto geparkt ist. Der Hauptzweck dieser Apps besteht darin, gestreamte Videos anzuzeigen. Diese Anwendungen werden mit „Views“ oder „Compose“ erstellt. Weitere Informationen finden Sie unter Apps zur Videowiedergabe für Android Automotive OS entwickeln. Weitere Informationen finden Sie unter Video-Apps für Android Automotive OS entwickeln.

Apps zur Audiowiedergabe für Autos entwickeln

In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine einfache App zur Medienwiedergabe haben. Falls nicht, gehen Sie zuerst zu Einfache Mediaplayer-App erstellen.

In diesem Leitfaden erfahren Sie, was Sie tun müssen, und enthält Links zu weiteren Ressourcen mit spezifischen Anleitungen.

Wiedergabekomponenten

Media3 bietet mehrere Schlüsselkomponenten für Wiedergabeanwendungsfälle. Die Klassen, aus denen diese Komponenten bestehen, sind Ihnen vertraut, wenn Sie mit früheren Android-Mediatheken gearbeitet haben.

Das folgende Diagramm zeigt, wie diese Komponenten in einer typischen Anwendung zusammenwirken.

Die verschiedenen Komponenten einer Medien-App, die Media3 verwendet, sind auf verschiedene einfache Weise miteinander verbunden, da sie ihre Schnittstellen und Klassen gemeinsam nutzen.
Abbildung 1: Komponenten einer Medienanwendung

Weitere Informationen findest du unter Wiedergabekomponenten.

MediaLibraryService und MediaLibrarySession implementieren

Ein MediaLibraryService bietet eine standardisierte API, die es ermöglicht, auf Ihre Mediathek zuzugreifen und sie bereitzustellen. Das ist erforderlich, wenn Sie Ihrer Medien-App Android Auto oder Android Automotive OS hinzufügen, da diese Plattformen eine eigene treibersichere UI für Ihre Mediathek bieten. Weitere Informationen zum Implementieren und Verwenden von MediaLibraryService finden Sie unter Inhalte mit MediaLibraryService bereitstellen.

Verwenden Sie für die Wiedergabesteuerung eine Mediensitzung. Die MediaSession API bietet eine universelle Art der Interaktion mit einem Audio- oder Videoplayer. Die Jetpack Media3-Bibliothek enthält MediaLibrarySession, das MediaSession erweitert, um APIs zum Suchen von Inhalten hinzuzufügen.

Durch das Verbinden einer Mediensitzung mit einem Player kann eine App die Medienwiedergabe extern bewerben und Wiedergabebefehle von externen Quellen wie Android Auto, Android Automotive OS oder Google Assistant empfangen. Weitere Informationen finden Sie unter Wiedergabe mit einer MediaSession steuern und bewerben und MediaLibrarySession verwenden.

Ihre Mediensitzung sollte mindestens die Unterstützung für die folgenden Player-Befehle erklären:

Im Leitfaden Wiedergabesteuerung aktivieren wird beschrieben, wie du die Wiedergabesteuerung in Autos anpassen kannst.

Wenn Android Auto oder Android Automotive OS eine Verbindung zu Ihrer App herstellt, wird eine Inhaltsbibliothek angefordert, die die onGetLibraryRoot()-Callback-Methode auslöst. Sie können ein Stammmedienelement schnell zurückgeben, um Zugriff auf Ihre Bibliothek zu gewähren. Die Callback-Methode onGetChildren() wird aufgerufen, wenn Android Auto oder Android Automotive OS versucht, tiefere Ebenen Ihrer Inhaltsbibliothek zu durchsuchen.

Für diese Plattformen gelten zusätzliche Beschränkungen für die Struktur Ihrer Inhaltsbibliothek. Weitere Informationen zum Anpassen der Anzeige der Inhaltsbibliothek finden Sie im Leitfaden Medienbrowserdienst erstellen.

Unterstützung für Android Auto erklären

Verwende den folgenden Eintrag im Manifest, um zu erklären, dass deine Smartphone-App Android Auto unterstützt:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Dieser Manifesteintrag verweist auf eine XML-Datei, in der deklariert ist, welche Fahrzeugfunktionen Ihre Anwendung unterstützt. Wenn Sie angeben möchten, dass Sie eine Medien-App haben, fügen Sie dem Verzeichnis res/xml/ in Ihrem Projekt eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu. Diese Datei sollte den folgenden Inhalt enthalten:

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

Unterstützung für Android Automotive OS deklarieren

Du musst ein Automobilmodul erstellen, da nicht die gesamte Logik in deiner App für eine Automobil-App freigegeben werden kann. Für einige Komponenten von Android Automotive OS, wie das Manifest, gelten plattformspezifische Anforderungen. Erstellen Sie ein Modul, das den Code für diese Komponenten von anderem Code in Ihrem Projekt getrennt halten kann, z. B. dem Code für Ihre mobile App.

So fügen Sie Ihrem Projekt ein Automobilmodul hinzu:

  1. Klicken Sie in Android Studio auf File > New > New Module.
  2. Wählen Sie Automotive Module (Automobilmodul) aus und klicken Sie auf Next (Weiter).
  3. Geben Sie einen Namen für die Anwendung/Bibliothek ein. Dies ist der Name, den Nutzer unter Android Automotive OS für deine App sehen.
  4. Geben Sie einen Modulnamen ein.
  5. Passen Sie den Paketnamen an Ihre App an.
  6. Wählen Sie API 28: Android 9.0 (Pie) als Minimum SDK aus und klicken Sie dann auf Weiter.

    Alle Autos, die Android Automotive OS unterstützen, laufen unter Android 9 (API-Level 28) oder höher. Wenn Sie diesen Wert auswählen, werden alle kompatiblen Autos ausgewählt.

  7. Wählen Sie No Activity (Keine Aktivität) aus und klicken Sie auf Finish (Fertigstellen).

Nachdem du das Modul in Android Studio erstellt hast, öffne das AndroidManifest.xml in deinem neuen Automobilmodul:

<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>

Das Element application enthält einige standardmäßige App-Informationen sowie ein uses-feature-Element, das die Unterstützung für Android Automotive OS deklariert. Im Manifest sind keine Aktivitäten deklariert.

Wenn du Einstellungen oder Anmeldeaktivitäten implementierst, kannst du sie hier hinzufügen. Diese Aktivitäten werden vom System mithilfe expliziter Intents ausgelöst. Sie sind die einzigen Aktivitäten, die Sie im Manifest für Ihre Android Automotive OS-App deklarieren.

Nachdem Sie Einstellungen oder Anmeldeaktivitäten hinzugefügt haben, vervollständigen Sie Ihre Manifestdatei. Legen Sie dazu das Attribut android:appCategory="audio" im Element application fest und fügen Sie die folgenden uses-feature-Elemente hinzu:

<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>

Durch das explizite Festlegen dieser Funktionen auf required="false" wird sichergestellt, dass Ihre App nicht mit verfügbaren Hardwarefunktionen in Automotive OS-Geräten in Konflikt steht.

Erkläre mit dem folgenden Manifesteintrag, dass deine App das Android Automotive OS unterstützt:

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

Dieser Manifesteintrag verweist auf eine XML-Datei, in der die Fahrzeugfunktionen deklariert werden, die von deiner Anwendung unterstützt werden.

Fügen Sie dem Verzeichnis res/xml/ in Ihrem Projekt eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu, um anzugeben, dass Sie eine Medien-App haben. Fügen Sie den folgenden Inhalt in die Datei ein:

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

Intent-Filter

Android Automotive OS verwendet explizite Intents, um Aktivitäten in Ihrer Medien-App auszulösen. Schließen Sie keine Aktivitäten mit CATEGORY_LAUNCHER- oder ACTION_MAIN-Intent-Filtern in der Manifestdatei ein.

Aktivitäten wie die im folgenden Beispiel zielen in der Regel auf ein Smartphone oder ein anderes Mobilgerät ab. Deklariere diese Aktivitäten in dem Modul, mit dem die Smartphone-App erstellt wird, und nicht im Modul, aus dem deine Android Automotive OS-App erstellt wird.

<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>

Weitere Schritte

Da Sie nun eine App für Android Auto und Android Automotive OS haben, können Sie zusätzliche Schritte unternehmen, um Ihre App für eine sicherere Nutzung beim Fahren zu optimieren. Weitere Empfehlungen für eine sichere und bequeme Nutzung finden Sie in den technischen Anleitungen für Sprachbedienung, Ablenkungsabwehr und Fehlerbehandlung.

Apps zur Videowiedergabe für Android Automotive OS entwickeln

Video-Apps werden getrennt von Medien-Apps in Autos kategorisiert. Sie müssen daher einige spezifische Anforderungen für Video-Apps beachten. Diese werden unter Geparkte Apps für Android Automotive OS erstellen und Video-Apps für Android Automotive OS erstellen beschrieben. Sie müssen dazu die folgende Anleitung befolgen.

App als Video-App markieren

Wenn Sie angeben möchten, dass Ihre Anwendung Videos unterstützt, fügen Sie dem Verzeichnis res/xml/ in Ihrem Projekt eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu. Fügen Sie in dieser Datei den folgenden Inhalt ein:

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

Fügen Sie dann im application-Element Ihres Manifests das folgende meta-data-Element hinzu, das auf die XML-Datei verweist:

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