Medien-App auf Android für Autos erweitern

Ihre App kann in Fahrzeugen mit Android Auto oder Android Automotive OS genutzt werden. Verwenden Sie eine App-Architektur, die für beide Fälle funktioniert, damit alle Nutzer Ihre App nutzen können.

Was ist Android für Autos?

Eine Medien-App für Autos kann Nutzern die Möglichkeit bieten, ihr digitales Leben nahtlos mit ihrem Auto zu verbinden. Wenn Sie dieselben Apps für Smartphones auch für Autos verfügbar machen, können Sie die Nutzerfreundlichkeit verbessern. Dazu können Sie Android Auto oder Android Automotive OS einbinden.

Android-Apps für Autos dürfen vor allem die Fahrer nicht ablenken. Sie können Ablenkungen minimieren, indem Sie Best Practices wie Sprachbefehle und ein sehr praktisches visuelles Design befolgen. So kann Ihre Medien-App dem Fahrer nur dann aktuelle Informationen anzeigen, wenn sie relevant sind, und vorhersehbare Muster für häufige Aufgaben verwenden.

Android Auto

Android Auto bietet eine für Autofahrer optimierte App für Nutzer, die ein Android-Smartphone mit der Android Auto App und eine kompatible Auto- oder Aftermarket-Stereoanlage haben. Sie können Ihre App direkt auf dem Display ihres Autos verwenden, indem sie ihr Smartphone verbinden. Sie ermöglichen Android Auto, eine Verbindung zu Ihrer Smartphone-App herzustellen, indem Sie Dienste erstellen, mit denen Android Auto eine für Fahrer optimierte Benutzeroberfläche anzeigt.

Android Automotive OS

Android Automotive OS ist ein Android-basiertes Infotainmentsystem, das in Fahrzeugen verbaut ist. Das System des Autos ist ein eigenständiges Android-Gerät, das für das Fahren optimiert ist. Mit Android Automotive OS installieren Nutzer Ihre App direkt im Auto und nicht auf ihrem 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 findest du unter Apps zur Audiowiedergabe für Autos entwickeln. Weitere Informationen finden Sie auch unter Medien-Apps für Autos entwickeln.

Medien-Apps werden mithilfe von MediaLibraryService und MediaSession erstellt. Unter Android Automotive OS können Sie mit „Ansichten“ oder „Schreiben“ auch Anmelde- und Einstellungsbildschirme erstellen, die im geparkten Zustand verwendet werden können.

Mit Video-Apps können sich Nutzer Videos ansehen, während das Auto geparkt ist. Der Hauptzweck dieser Apps besteht darin, Streamingvideos anzuzeigen. Diese Apps wurden mithilfe von Ansichten 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.

Audiowiedergabe-Apps für Autos entwickeln

In diesem Leitfaden wird vorausgesetzt, dass Sie bereits über eine einfache App zur Medienwiedergabe verfügen. Falls nicht, lesen Sie den Hilfeartikel Einfache Mediaplayer-App erstellen.

In diesem Leitfaden finden Sie Informationen zu den erforderlichen Schritten sowie Links zu weiteren Ressourcen mit detaillierten Anleitungen.

Wiedergabekomponenten

Media3 bietet mehrere wichtige Komponenten für Anwendungsfälle der Wiedergabe. Die Klassen, aus denen diese Komponenten bestehen, sind Ihnen vertraut, wenn Sie schon einmal mit früheren Android-Medienbibliotheken gearbeitet haben.

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

Die verschiedenen Komponenten einer Medien-App, die Media3 verwendet, sind aufgrund ihrer gemeinsamen Nutzung von Schnittstellen und Klassen auf mehrere einfache Arten miteinander verbunden.
Abbildung 1: Komponenten einer Medien-App

Weitere Informationen findest du unter Wiedergabekomponenten.

MediaLibraryService und MediaLibrarySession implementieren

Ein MediaLibraryService bietet eine standardisierte API, um Inhalte aus deiner Medienbibliothek bereitzustellen und Zugriff darauf zu gewähren. Dies ist erforderlich, wenn Sie Ihrer Medien-App die Unterstützung für Android Auto oder Android Automotive OS hinzufügen, da diese Plattformen eine eigene fahrerfreundliche Benutzeroberfläche für Ihre Medienbibliothek bereitstellen. Weitere Informationen zur Implementierung und Verwendung von MediaLibraryService findest du unter Inhalte mit MediaLibraryService bereitstellen.

Verwenden Sie für die Wiedergabesteuerung eine Mediensitzung. Die MediaSession API bietet eine universelle Möglichkeit, mit einem Audio- oder Videoplayer zu interagieren. Die Jetpack Media3-Bibliothek enthält MediaLibrarySession, die MediaSession um APIs für die Mediensuche erweitert.

Wenn eine Mediensitzung mit einem Player verbunden ist, kann eine App die Medienwiedergabe extern ankündigen und Wiedergabebefehle von externen Quellen wie Android Auto, Android Automotive OS oder Google Assistant empfangen. Weitere Informationen findest du unter Wiedergabe mit einer MediaSession steuern und ankündigen und MediaLibrarySession verwenden.

Deine Mediasitzung sollte mindestens die folgenden Playerbefehle unterstützen:

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

Wenn Android Auto oder Android Automotive OS eine Verbindung zu Ihrer App herstellen, wird eine Inhaltsbibliothek angefordert, die angezeigt werden soll. Dadurch wird die onGetLibraryRoot()-Callback-Methode ausgelöst. Sie können ein Stammmedienelement schnell zurückgeben, um den Zugriff auf Ihre Mediathek zu ermöglichen. Die Callback-Methode onGetChildren() wird aufgerufen, wenn Android Auto oder Android Automotive OS versuchen, tiefere Ebenen in deiner Mediathek zu durchsuchen.

Auf diesen Plattformen gelten zusätzliche Beschränkungen für die Strukturierung Ihrer Inhaltsbibliothek. Weitere Informationen zum Anpassen der Darstellung deiner Inhaltsbibliothek findest du im Leitfaden Media-Browser-Dienst erstellen.

Unterstützung für Android Auto deklarieren

Verwenden Sie den folgenden Manifesteintrag, um anzugeben, dass Ihre 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 bezieht sich auf eine XML-Datei, in der die von Ihrer App unterstützten Funktionen für die Automobilbranche deklariert werden. Wenn Sie angeben möchten, dass es sich um eine Medien-App handelt, fügen Sie dem Verzeichnis res/xml/ in Ihrem Projekt eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu. Diese Datei sollte Folgendes enthalten:

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

Unterstützung für Android Automotive OS deklarieren

Du musst ein Automotive-Modul erstellen, da nicht die gesamte Logik deiner App mit einer Automotive-App geteilt werden kann. Einige Komponenten von Android Automotive OS, wie das Manifest, haben plattformspezifische Anforderungen. Erstellen Sie ein Modul, mit dem der Code für diese Komponenten getrennt von anderen Code in Ihrem Projekt aufbewahrt werden kann, z. B. der Code für Ihre mobile App.

So fügen Sie Ihrem Projekt ein Automotive-Modul hinzu:

  1. Klicken Sie in Android Studio auf File > New > New Module.
  2. Wählen Sie Automotive Module aus und klicken Sie auf Next.
  3. Geben Sie einen Anwendungs-/Bibliotheksnamen ein. Das ist der Name, den Nutzer für Ihre App unter Android Automotive OS 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) für das Minimum SDK aus und klicken Sie dann auf Weiter.

    Alle Autos, die Android Automotive OS unterstützen, verwenden Android 9 (API-Ebene 28) oder höher. Wenn Sie diesen Wert auswählen, wird die Ausrichtung auf alle kompatiblen Autos festgelegt.

  7. Wählen Sie Keine Aktivität aus und klicken Sie dann auf Fertigstellen.

Nachdem Sie Ihr Modul in Android Studio erstellt haben, öffnen Sie die AndroidManifest.xml in Ihrem neuen Automotive-Modul:

<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 Standard-App-Informationen sowie ein Element uses-feature, das die Unterstützung für Android Automotive OS deklariert. Beachten Sie, dass im Manifest keine Aktivitäten deklariert sind.

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

Nachdem Sie alle Einstellungen oder Anmeldeaktivitäten hinzugefügt haben, vervollständigen Sie Ihre Manifestdatei, indem Sie das Attribut android:appCategory="audio" im Element application festlegen und die folgenden uses-feature-Elemente hinzufügen:

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

Wenn Sie diese Funktionen explizit auf required="false" festlegen, wird verhindert, dass Ihre App mit verfügbaren Hardwarefunktionen auf Automotive OS-Geräten in Konflikt gerät.

Verwenden Sie den folgenden Manifesteintrag, um anzugeben, dass Ihre App Android Automotive OS unterstützt:

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

Dieser Manifesteintrag bezieht sich auf eine XML-Datei, in der die von Ihrer App unterstützten Funktionen für die Automobilbranche deklariert werden.

Wenn Sie angeben möchten, dass es sich um eine Medien-App handelt, fügen Sie dem Verzeichnis res/xml/ in Ihrem Projekt eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu. Fügen Sie der Datei den folgenden Inhalt hinzu:

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

Intent-Filter

Android Automotive OS verwendet explizite Intents, um Aktivitäten in Ihrer Medien-App auszulösen. Fügen Sie der Manifestdatei keine Aktivitäten mit Intent-Filtern vom Typ CATEGORY_LAUNCHER oder ACTION_MAIN hinzu.

Aktivitäten wie im folgenden Beispiel zielen in der Regel auf ein Smartphone oder ein anderes Mobilgerät ab. Deklarieren Sie diese Aktivitäten im Modul, in dem die Smartphone-App erstellt wird, nicht im Modul, in dem Ihre 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

Nachdem Sie eine App für Android Auto und Android Automotive OS entwickelt haben, können Sie zusätzliche Schritte unternehmen, um Ihre App für die sichere Nutzung während der Fahrt zu optimieren. Weitere Empfehlungen für eine sichere und praktische Nutzererfahrung finden Sie in den technischen Leitfäden zu Sprachaktionen, Sicherheitsmaßnahmen gegen Ablenkungen und Fehlerbehandlung.

Videowiedergabe-Apps für Android Automotive OS entwickeln

Da Video-Apps in Autos separat von Medien-Apps kategorisiert werden, müssen Sie einige spezifische Anforderungen für Video-Apps beachten, die in den Artikeln Apps für geparkte Autos für Android Automotive OS entwickeln und Video-Apps für Android Automotive OS entwickeln beschrieben werden. Folgen Sie dazu der Anleitung unten.

App als Video-App kennzeichnen

Wenn Ihre App 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 diese Datei Folgendes 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"/>