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.
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:
- Klicken Sie in Android Studio auf File > New > New Module.
- Wählen Sie Automotive Module (Automobilmodul) aus und klicken Sie auf Weiter.
- 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.
- Geben Sie einen Modulnamen ein.
- Passen Sie den Paketnamen an Ihre App an.
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.
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"/>