Bieten Sie Ihre App für Fahrzeuge an, auf denen Android Auto oder Android Automotive OS ausgeführt wird. Verwenden Sie eine App-Architektur, die für beide Fälle geeignet ist, damit alle Nutzer Ihre App verwenden können.
Was ist Android for Cars?
Mit einer Medien-App für Autos können Nutzer ihre digitalen Inhalte nahtlos mit ihrem Auto verbinden. Wenn Sie dieselben Apps, die für Smartphones verfügbar sind, auch für Autos anbieten, verbessern Sie die Nutzerfreundlichkeit. Dazu können Sie Android Auto oder Android Automotive OS verwenden.
Android-Apps für Autos müssen vor allem Ablenkungen für den Fahrer vermeiden. Sie können Ablenkungen minimieren, indem Sie Best Practices wie Sprachbefehle und ein sehr praktisches visuelles Design verwenden. So kann Ihre Medien-App dem Fahrer zeitnah 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-Oberfläche für Nutzer, die ein Android-Smartphone mit der Android Auto App und ein kompatibles Auto oder Aftermarket-Stereosystem 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 mit Ihrer Smartphone-App herzustellen, indem Sie Dienste erstellen, die Android Auto verwendet, um dem Fahrer eine für Autofahrer optimierte Oberfläche anzuzeigen.
Android Automotive OS
Android Automotive OS ist ein Android-basiertes Infotainmentsystem, das in Fahrzeuge integriert 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 auf dem 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 Apps zur Audiowiedergabe 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 auch Anmelde- und Einstellungsbildschirme (für die Verwendung im geparkten Zustand) mit Views oder Compose erstellen.
Mit Video-Apps können Nutzer Streamingvideos ansehen, während das Auto geparkt ist. Der Hauptzweck dieser Apps besteht darin, Streamingvideos anzuzeigen. Diese Apps 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 diesem Leitfaden wird davon ausgegangen, dass Sie bereits eine einfache App zur Medienwiedergabe haben. Wenn nicht, finden Sie unter Eine einfache Medienplayer-App erstellen eine Anleitung für den Einstieg.
In diesem Leitfaden erfahren Sie, was Sie tun müssen, und finden Links zu weiteren Ressourcen mit spezifischen Anleitungen.
Wiedergabekomponenten
Media3 bietet mehrere wichtige Komponenten für Wiedergabeanwendungsfälle. Die Klassen, aus denen diese Komponenten bestehen, sind Ihnen bekannt, wenn Sie bereits mit früheren Android-Medienbibliotheken gearbeitet haben.
Das folgende Diagramm zeigt, wie diese Komponenten in einer typischen App zusammenarbeiten.
Weitere Informationen finden Sie unter Wiedergabekomponenten.
MediaLibraryService und MediaLibrarySession implementieren
Ein MediaLibraryService
bietet eine standardisierte API, um Ihre Medienbibliothek bereitzustellen und den Zugriff darauf zu ermöglichen.
Dies ist erforderlich, wenn Sie Ihrer Medien-App Unterstützung für Android Auto oder Android Automotive OS hinzufügen, da diese Plattformen eine eigene fahrersichere UI für Ihre Medienbibliothek bieten. Weitere Informationen zum Implementieren und Verwenden eines
MediaLibraryService finden Sie unter
Inhalte mit MediaLibraryService bereitstellen.
Verwenden Sie für die Wiedergabesteuerung eine Media Session. Die MediaSession API bietet eine universelle Möglichkeit, mit einem Audio- oder Videoplayer zu interagieren. Die Jetpack Media3-Bibliothek enthält MediaLibrarySession, die MediaSession erweitert, um APIs zum Durchsuchen von Inhalten hinzuzufügen.
Durch die Verbindung einer Media Session 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 Media Session sollte mindestens die folgenden Player-Befehle unterstützen:
Im Leitfaden Wiedergabesteuerung aktivieren wird beschrieben, wie Sie die Wiedergabesteuerung in Autos anpassen können.
Wenn Android Auto oder Android Automotive OS eine Verbindung zu Ihrer App herstellen, fordern sie eine Inhaltsbibliothek an, die angezeigt werden soll. Dadurch wird die Callback-Methode onGetLibraryRoot() ausgelöst. Sie können schnell ein Stamm-Medienelement zurückgeben, um den Zugriff auf Ihre Bibliothek zu ermöglichen. Die Callback-Methode onGetChildren() wird aufgerufen, wenn Android Auto oder Android Automotive OS versuchen, tiefere Ebenen Ihrer Inhaltsbibliothek zu durchsuchen.
Diese Plattformen erzwingen zusätzliche Beschränkungen für die Struktur Ihrer Inhaltsbibliothek. Details zum Anpassen der Darstellung Ihrer Inhaltsbibliothek finden Sie im Leitfaden Dienst für den Medienbrowser erstellen.
Unterstützung für Android Auto deklarieren
Verwenden Sie den folgenden Manifesteintrag, um zu deklarieren, 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 verweist auf eine XML-Datei, in der deklariert wird, welche Autofunktionen Ihre App unterstützt. Wenn Sie angeben möchten, dass Sie eine Medien-App haben, fügen Sie eine XML-Datei mit dem Namen automotive_app_desc.xml dem Verzeichnis res/xml/ in Ihrem Projekt hinzu. Diese Datei sollte den folgenden Inhalt haben:
<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 mit einer Automotive-App geteilt werden kann. Einige Komponenten von Android Automotive OS, z. B. das Manifest, haben plattformspezifische Anforderungen. Erstellen Sie ein Modul, mit dem Sie den Code für diese Komponenten von anderem Code in Ihrem Projekt trennen können, z. B. dem 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 aus und klicken Sie dann auf Next.
- Geben Sie einen Application/Library name ein. Dies ist der Name, den Nutzer für Ihre App unter Android Automotive OS sehen.
- Geben Sie einen Module name ein.
- Passen Sie den Package name an Ihre App an.
Wählen Sie für das Minimum SDK die Option API 28: Android 9.0 (Pie) aus und klicken Sie dann auf Next.
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 berücksichtigt.
Wählen Sie No Activity aus und klicken Sie dann auf Finish.
Nachdem Sie Ihr Modul in Android Studio erstellt haben, öffnen Sie die Datei 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 application
Element enthält einige Standardinformationen zur App sowie ein
uses-feature
Element, das die Unterstützung für Android Automotive OS deklariert. Im Manifest sind keine Aktivitäten deklariert.
Wenn Sie Einstellungen oder Anmeldeaktivitäten implementieren, fügen Sie sie hier hinzu. Diese Aktivitäten werden vom System mit expliziten Intents ausgelöst und 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 die Manifestdatei, indem Sie
das android:appCategory="audio" Attribut im application Element 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" setzen, wird verhindert, dass
Ihre App mit den verfügbaren Hardwarefunktionen in Automotive OS
Geräten in Konflikt gerät.
Verwenden Sie den folgenden Manifesteintrag, um zu deklarieren, 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 verweist auf eine XML-Datei, in der die Autofunktionen deklariert werden, die Ihre App unterstützt.
Wenn Sie angeben möchten, dass Sie eine Medien-App haben, fügen Sie eine XML-Datei mit dem Namen automotive_app_desc.xml dem Verzeichnis res/xml/ in Ihrem Projekt hinzu. Fügen Sie dieser Datei den folgenden Inhalt hinzu:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
com.google.android.gms.car.application
Intent-Filter
Android Automotive OS verwendet explizite Intents, um Aktivitäten in Ihrer Medien
App auszulösen. Fügen Sie in der Manifestdatei keine Aktivitäten mit
CATEGORY_LAUNCHER
oder ACTION_MAIN Intent
Filtern ein.
Aktivitäten wie im folgenden Beispiel sind in der Regel auf ein Smartphone oder ein anderes Mobilgerät ausgerichtet. Deklarieren Sie diese Aktivitäten im Modul, das die Smartphone-App erstellt, nicht im Modul, das Ihre Android Automotive OS-App erstellt.
<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 nun eine App für Android Auto und Android Automotive OS haben, können Sie weitere Schritte unternehmen, um die App für die Verwendung während der Fahrt zu optimieren. Weitere Empfehlungen für eine sichere und komfortable Nutzererfahrung finden Sie in den technischen Leitfäden zu Sprachaktionen, Ablenkungsschutz, und Fehlerbehandlung.
Apps zur Videowiedergabe 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, wie unter Apps für geparkte Autos entwickelnund Video-Apps für Android Automotive OS entwickelnbeschrieben. Sie müssen die folgende Anleitung verwenden.
App als Video-App kennzeichnen
Wenn Sie angeben möchten, dass Ihre App Videos unterstützt, fügen Sie eine XML-Datei mit dem Namen automotive_app_desc.xml dem Verzeichnis „res/xml/“ in Ihrem Projekt hinzu. Fügen Sie dieser Datei den folgenden Inhalt hinzu:
<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"/>