Sie können Ihre App für Fahrzeuge mit Android Auto oder Android Automotive OS anbieten. Verwenden Sie eine App-Architektur, die für beide Fälle funktioniert, damit alle Nutzer Ihre App verwenden können.
Was ist Android for Cars?
Eine Media-App für Autos kann Nutzern die Möglichkeit bieten, ihr digitales Leben nahtlos mit ihrem Auto zu 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 integrieren.
Android-Apps für Autos dürfen den Fahrer auf keinen Fall ablenken. Sie können Ablenkungen minimieren, indem Sie Best Practices wie die Verwendung von Sprachbefehlen und ein sehr praktisches visuelles Design befolgen. So kann Ihre Media-App dem Fahrer nur dann aktuelle Informationen anzeigen, wenn sie relevant sind, und für häufige Aufgaben vorhersehbare Muster verwenden.
Android Auto
Android Auto bietet eine für Autofahrer optimierte App-Umgebung 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 ihn optimierte Benutzeroberfläche zu präsentieren.
Android Automotive OS
Android Automotive OS ist ein auf Android basierendes Infotainmentsystem, das in Fahrzeuge eingebaut ist. Das System des Autos ist ein eigenständiges Android-Gerät, das für die Nutzung während der Fahrt optimiert ist. Mit Android Automotive OS installieren Nutzer Ihre App direkt auf dem Auto und nicht auf ihrem Smartphone.
Unterstützte App-Kategorien
Mit Media-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 unter Medien-Apps für Autos entwickeln.
Media-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 Video-Apps für Android Automotive OS entwickeln. Weitere Informationen finden Sie unter Video-Apps für Android Automotive OS entwickeln.
Apps für die Audiowiedergabe für Autos entwickeln
In diesem Leitfaden wird davon ausgegangen, dass Sie bereits eine einfache App zur Medienwiedergabe haben. Falls nicht, erstellen Sie zuerst eine einfache Media-Player-App.
In diesem Leitfaden finden Sie Informationen dazu, was Sie tun müssen, sowie 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 vertraut, wenn Sie bereits mit früheren Android-Medienbibliotheken gearbeitet haben.
Das folgende Diagramm zeigt, wie diese Komponenten in einer typischen App zusammenwirken.
Weitere Informationen finden Sie unter Wiedergabekomponenten.
MediaLibraryService
und MediaLibrarySession
implementieren
Eine MediaLibraryService
bietet eine standardisierte API zum Bereitstellen und Ermöglichen des Zugriffs auf Ihre Medienbibliothek.
Dies ist erforderlich, wenn du deiner Medien-App Unterstützung für Android Auto oder Android Automotive OS hinzufügst, da diese Plattformen eine eigene fahrersichere Benutzeroberfläche für deine Mediathek bieten. Weitere Informationen zur Implementierung und Verwendung von MediaLibraryService
finden Sie unter Inhalte mit MediaLibraryService bereitstellen.
Verwenden Sie eine Mediensitzung für die Wiedergabesteuerung. Die MediaSession
API bietet eine universelle Möglichkeit zur Interaktion mit einem Audio- oder Videoplayer. Die Jetpack Media3-Bibliothek enthält MediaLibrarySession
, das MediaSession
erweitert, um APIs zum Durchsuchen von Inhalten hinzuzufügen.
Wenn Sie eine Mediensitzung mit einem Player verbinden, 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 folgenden Player-Befehle unterstützen:
Im Leitfaden zur Aktivierung der Wiedergabesteuerung wird 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 Callback-Methode onGetLibraryRoot()
ausgelöst. Sie können ein Stammmedienelement schnell zurückgeben, um den Zugriff auf Ihre Mediathek zu ermöglichen. Die onGetChildren()
-Callback-Methode wird aufgerufen, wenn Android Auto oder Android Automotive OS versuchen, tiefere Ebenen Ihrer Inhaltsbibliothek zu durchsuchen.
Auf diesen Plattformen gelten zusätzliche Einschränkungen für die Struktur Ihrer Inhaltsbibliothek. Weitere Informationen zum Anpassen der Darstellung Ihrer Inhaltsbibliothek finden Sie im Leitfaden zum Erstellen eines Media-Browser-Dienstes.
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 Media-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 Folgendes 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 mit einer Automotive-App geteilt werden kann. Einige Komponenten von Android Automotive OS, z. B. das Manifest, haben plattformspezifische Anforderungen. Erstellen Sie ein Modul, in dem der Code für diese Komponenten von anderem Code in Ihrem Projekt getrennt ist, 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 (Automobilmodul) aus und klicken Sie auf Next (Weiter).
- Geben Sie einen Anwendungs-/Bibliotheksnamen ein. Das ist der Name, den Nutzer für Ihre 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, laufen mit Android 9 (API-Level 28) oder höher. Wenn Sie diesen Wert auswählen, sind alle kompatiblen Autos abgedeckt.
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 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 Standard-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 Sie Einstellungen oder Anmeldeaktivitäten implementieren, fügen Sie sie hier hinzu. 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 Einstellungen oder Anmeldeaktivitäten hinzugefügt haben, vervollständigen Sie die 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"
setzen, wird sichergestellt, dass Ihre App nicht mit den verfügbaren Hardwarefunktionen auf Automotive OS-Geräten in Konflikt gerät.
Mit dem folgenden Manifesteintrag deklarieren Sie, 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 von Ihrer App unterstützten Autofunktionen deklariert werden.
Wenn Sie angeben möchten, dass Sie eine Media-App haben, 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 Media-App auszulösen. Fügen Sie in der Manifestdatei keine Aktivitäten ein, die CATEGORY_LAUNCHER
- oder ACTION_MAIN
-Intent-Filter haben.
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, mit dem die Smartphone-App erstellt wird, nicht im Modul, mit 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 haben, können Sie zusätzliche Schritte unternehmen, um die App für die Nutzung während der Fahrt zu optimieren. Weitere Empfehlungen für eine sichere und komfortable Nutzung finden Sie in den technischen Leitfäden für Sprachaktionen, Ablenkungsschutz und Fehlerbehandlung.
Apps für die 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, die unter Apps für geparkte Autos entwickeln und Video-Apps für Android Automotive OS entwickeln beschrieben werden. Folgen Sie dazu der folgenden Anleitung.
App als Video-App kennzeichnen
Wenn Sie angeben möchten, dass 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 ein, das auf die XML-Datei verweist:
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>