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 Anwendungsarchitektur, die für beide Fälle funktioniert, damit jeder Nutzer Ihre Anwendung verwenden kann.

Was ist Android for Cars?

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 für gängige Aufgaben vorhersehbare Muster 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. Damit Android Auto eine Verbindung zu deiner Smartphone-App herstellen kann, musst du Dienste erstellen, die Android Auto verwendet, um dem Treiber eine für Autofahrer optimierte Oberfläche anzuzeigen.

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 finden Sie unter Audiowiedergabe-Apps für Autos entwickeln. Weitere Informationen finden Sie auch unter Medien-Apps für Autos entwickeln.

Medien-Apps werden mit 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 Nutzer sich Streamingvideos 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, fahren Sie mit Einfache Mediaplayer-App erstellen fort.

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 mit früheren Android-Mediatheken gearbeitet haben.

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

Die verschiedenen Komponenten einer Media-App, die Media3 verwendet, können aufgrund der gemeinsamen Schnittstellen und Klassen auf mehrere einfache Arten miteinander verbunden werden.
Abbildung 1: Komponenten einer Medien-App

Weitere Informationen finden Sie 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:

In der Anleitung Wiedergabesteuerung aktivieren werden Möglichkeiten beschrieben, wie Sie die Wiedergabesteuerung in Autos anpassen können.

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 schnell ein Stamm-Mediaelement zurückgeben, um den Zugriff auf Ihre Bibliothek zu ermöglichen. Die onGetChildren()-Callback-Methode wird aufgerufen, wenn Android Auto oder Android Automotive OS versucht, tiefere Ebenen deiner Medienbibliothek zu durchsuchen.

Diese Plattformen fordern zusätzliche Einschränkungen für die Struktur Ihrer Contentbibliothek. Weitere Informationen zum Anpassen der Darstellung Ihrer Inhaltsbibliothek finden Sie im Leitfaden Medienbrowser 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 folgenden Inhalt enthalten:

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

Unterstützung für Android Automotive OS deklarieren

Sie müssen ein Automotive-Modul erstellen, da nicht die gesamte Logik in Ihrer App für eine Automotive-App freigegeben werden kann. Einige Komponenten von Android Automotive OS, z. B. 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 (Automobilmodul) aus und klicken Sie auf Weiter.
  3. Geben Sie einen Namen für die Anwendung/Bibliothek ein. Das ist der Name, den Nutzer für deine 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 standardmäßige App-Informationen sowie ein uses-feature-Element, das die Unterstützung von 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 die im folgenden Beispiel sind in der Regel auf ein Smartphone oder ein anderes Mobilgerät ausgerichtet. 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>

Nächste 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 markieren

Wenn Sie angeben möchten, dass Ihre Anwendung Video 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"/>