Android Automotive OS unterstützt nicht nur Apps, die für die Nutzung während der Fahrt entwickelt wurden, sondern auch Browser, Spiele und Video-Apps, die im Parkmodus verwendet werden können. Sie können dieselbe App für Autos wie für andere Geräte mit großem Bildschirm bereitstellen, mit nur wenigen kleinen Änderungen.
Vorhandene App in einem Android Automotive OS-Emulator testen
Bevor Sie mit dem Erstellen Ihrer App für Android Automotive OS beginnen, sollten Sie Ihre vorhandene App zuerst in einem Android Automotive OS-Emulator testen. Folgen Sie der Anleitung unter Mit dem Android Automotive OS-Emulator testen, um einen Emulator einzurichten. Führen Sie die App aus. Folgen Sie dazu der Anleitung unter App im Emulator ausführen.
Achten Sie beim Ausführen Ihrer App auf Kompatibilitätsprobleme wie die folgenden:
- Infotainment-Displays haben eine feste Ausrichtung. Damit Apps die Qualitätsrichtlinien für Auto-Apps erfüllen, müssen sie sowohl das Hoch- als auch das Querformat unterstützen.
- APIs, die auf anderen Geräten verfügbar sind, sind unter Umständen nicht auf Android Automotive OS verfügbar. Einige APIs der Google Play-Dienste sind beispielsweise unter Android Automotive OS nicht verfügbar. Weitere Informationen finden Sie im Abschnitt Funktionen deaktivieren.
Manifestdateien Ihrer App konfigurieren
Damit Ihre App auf Android Automotive OS-Geräte ausgerichtet werden kann, muss sie bestimmte Manifesteinträge enthalten. Nachdem Sie die Bereitstellung auf Android Automotive OS-Geräten aktiviert haben, werden kompatible Apps manuell überprüft, um sicherzustellen, dass sie für die Nutzung im Auto sicher sind. Weitere Informationen finden Sie unter Für Autos verbreiten.
Erforderliche Android Automotive OS-Funktionen
Damit Apps, die für Android Automotive OS entwickelt wurden, im Play Store in einem Auto aufgeführt werden, müssen sie in der Datei AndroidManifest.xml
für die Funktion android.hardware.type.automotive
ein <uses-feature>
-Element enthalten:
<manifest ...> ... <!-- Depending on the track you choose to distribute your app, the android:required attribute can also be "false" or left unset. See Choose a track for Android Automotive OS. --> <uses-feature android:name="android.hardware.type.automotive" android:required="[true|false]" /> ... </manifest>
Zusätzlich zum im vorherigen Codebeispiel gezeigten Element müssen Apps, die für Android Automotive OS erstellt wurden, die folgenden <uses-feature>
-Elemente im Stammelement <manifest>
enthalten:
<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"/>
Wenn Sie diese Funktionen explizit als nicht erforderlich festlegen, können Sie dafür sorgen, dass Ihre App nicht mit verfügbaren Hardwarefunktionen auf Android Automotive OS-Geräten in Konflikt gerät.
Achten Sie darauf, dass keine Aktivitäten vorhanden sind, die für Ablenkungen sorgen.
Damit Ihre App nur während der Fahrt verfügbar ist, fügen Sie das folgende <meta-data>
-Element keinem <activity>
-Element in Ihrem Manifest hinzu:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Ohne diese Metadaten werden die Aktivitäten Ihrer App vom Betriebssystem automatisch blockiert, wenn das Auto in den Fahrmodus wechselt, um Ablenkungen für den Fahrer zu vermeiden. Dies geschieht als onPause
-Lebenszyklus-Callback, bei dem Sie sowohl die Video- als auch die Audiowiedergabe in Ihrer App pausieren müssen.
Kategoriespezifische Manifesteinträge
Zusätzlich zu den oben genannten Anforderungen, die für alle geparkten Apps gelten, gelten für die Kategorien „Video“ und „Spiele“ zusätzliche Anforderungen:
- Informationen zu Video-Apps finden Sie unter App als Video-App kennzeichnen.
- Informationen zu Spielen finden Sie unter App als Spiel kennzeichnen.
App für Android Automotive OS optimieren
Damit Ihre Nutzer die bestmögliche Erfahrung haben, sollten Sie beim Erstellen Ihrer App für Android Automotive OS die folgenden Punkte beachten.
Für große Bildschirme optimieren
Die Bildschirme in Fahrzeugen mit Android Automotive OS ähneln in Größe, Auflösung und Seitenverhältnis eher Tablets und faltbaren Geräten als Smartphones. Wenn Sie Ihre App also für große Bildschirme optimieren, profitieren auch Ihre Nutzer im Auto davon.
Weitere Informationen dazu, wie Sie große Bildschirme optimal nutzen, finden Sie in den Anleitungen Unterstützung verschiedener Bildschirmgrößen und UI zu responsiven Layouts migrieren. In den Galerien Medien und Spiele finden Sie Designinspirationen und -richtlinien.
Andere Optimierungen für große Bildschirme wie die Kompatibilität der Eingabe sind für Android Automotive OS nicht so direkt von Vorteil, können aber dennoch die Nutzerfreundlichkeit verbessern. Die Tastaturnavigation verwendet beispielsweise dieselben APIs wie die Drehknopfnavigation. Daher können Optimierungen hier von beiden Formfaktoren profitieren.
Mit Fenstereinsätzen und Displayausschnitten arbeiten
Wie bei anderen Formfaktoren enthält Android Automotive OS System-UI-Elemente wie Status- und Navigationsbalken sowie Unterstützung für nicht rechteckige Displays.
Standardmäßig werden Apps in einem Bereich dargestellt, der sich nicht mit Systemleisten oder Displayausschnitten überschneidet. Sie können die Systemleisten jedoch auch in Ihrer App ausblenden, Inhalte dahinter zeichnen oder Inhalte in einem Displayausschnitt anzeigen lassen, wie unter App-Layout innerhalb von Fenstereinblendungen beschrieben. Wenn Ihre App eine dieser Funktionen bietet, finden Sie in den folgenden Abschnitten Informationen dazu, wie Sie dafür sorgen können, dass Ihre App auf allen Android Automotive OS-Geräten ordnungsgemäß funktioniert.
Systemleisten, immersiver Modus und randloses Rendering
Systemleisten in Autos können eine andere Größe und Position haben als bei anderen Formfaktoren. Navigationsleisten können beispielsweise links, rechts oder unten auf dem Bildschirm platziert werden. Selbst wenn es oben eine Statusleiste und unten eine Navigationsleiste gibt (wie bei den meisten Smartphones und Tablets), sind diese Elemente in Autos wahrscheinlich viel größer.
Außerdem können OEMs mit Android Automotive OS festlegen, ob Apps die Systemleisten ein- oder ausblenden können, um in den Vollbildmodus zu wechseln und ihn wieder zu verlassen. Wenn OEMs beispielsweise verhindern, dass Apps die Systemleisten ausblenden, können sie dafür sorgen, dass Fahrzeugsteuerungen wie die Klimaanlage immer auf dem Display verfügbar sind. Wenn ein OEM Apps daran gehindert hat, Systemleisten zu steuern, passiert nichts, wenn eine App die APIs WindowInsetsController
(oder WindowInsetsControllerCompat
) aufruft, um Systemleisten einzublenden oder auszublenden. Weitere Informationen dazu, wie Sie feststellen können, ob Ihre App die Einzüge ändern konnte, finden Sie in der Dokumentation zu show
und hide
.
Ebenso können OEMs festlegen, ob Apps die Farbe und Transparenz von Systemleisten festlegen können, damit die Leisten und die darin enthaltenen Elemente jederzeit gut sichtbar sind. Wenn Ihre App bis zum Rand dargestellt wird, prüfen Sie, ob nur nicht kritische Inhalte hinter den Systemleisten dargestellt werden. Diese Inhalte sind möglicherweise nicht sichtbar, wenn der OEM des Geräts die Einstellung der Farbe oder Transparenz der Balken verhindert.
<!-- Depending on OEM configuration, these style declarations
(and the corresponding runtime calls) may be ignored -->
<style name="...">
<item name="android:statusBarColor">...</item>
<item name="android:navigationBarColor">...</item>
<item name="android:windowTranslucentStatus">...</item>
<item name="android:windowTranslucentNavigation">...</status>
</style>
Wenn Ihre App bis zum Rand des Displays reicht, sollten Sie keine Annahmen über Größe, Anzahl, Typ oder Position der Systemleisten treffen. Verwenden Sie stattdessen die APIs für Fenster-Einsätze, um die Inhalte Ihrer App relativ zu den Systemleisten anzuordnen. Weitere Informationen zur Verwendung dieser APIs finden Sie unter Inhalte in Ihrer App randlos anzeigen. Hartcodierte Werte für den Abstand, die zwar nicht empfohlen werden, aber Inhalte auf anderen Geräten im sicheren Bereich halten können, sind in Autos wahrscheinlich nicht effektiv.
An Displays mit unregelmäßiger Form anpassen
Neben rechteckigen Displays können einige Fahrzeuge auch Displays mit unregelmäßiger Form haben, wie in Abbildung 1 dargestellt:
Wenn Ihre App nicht randlos gerendert wird, müssen Sie nichts weiter tun, damit sie innerhalb des sicheren Bereichs gerendert wird.
Wenn Ihre App randlos gerendert wird, können Sie festlegen, wie sie sich in Bezug auf Displayausschnitte verhalten soll. Sie können dies mithilfe von Ressourcen tun, indem Sie das Attribut android:windowLayoutInDisplayCutoutMode
für das Design Ihrer App festlegen, oder zur Laufzeit, indem Sie das Attribut layoutInDisplayCutoutMode
des Fensters ändern.
Da sich die Displayausschnitte auf Android Automotive OS-Geräten von denen auf Mobilgeräten unterscheiden, sollten Sie LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
oder LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
nicht verwenden. Diese Symbole sind für die Ausschnitte auf Mobilgeräten optimiert. Verwenden Sie stattdessen LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
oder LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
, um den Ausschnitt entweder immer zu vermeiden oder immer zu betreten. Weitere Informationen zu den APIs für Displayausschnitte finden Sie unter Displayausschnitte unterstützen.
Wenn Ihre App im Bereich des Displayausschnitts gerendert wird und Sie ein anderes Verhalten für Android Automotive OS und Mobilgeräte wünschen, lesen Sie den Hilfeartikel Funktionen deaktivieren, wenn Ihre App dieses Verhalten zur Laufzeit festlegt, und Alternativressourcen verwenden, wenn Ihre App dieses Verhalten mithilfe von Ressourcendateien festlegt.
Funktionen deaktivieren
Wenn Sie eine vorhandene mobile App für Android Automotive OS verfügbar machen, sind bestimmte Funktionen möglicherweise nicht relevant oder verfügbar. In Autos ist das beispielsweise nicht der Fall. Außerdem ist nur ein Teil der Google Play-Dienste unter Android Automotive OS verfügbar. Weitere Informationen finden Sie unter Google Play-Dienste für Autos.
Sie können die PackageManager.hasSystemFeature
API verwenden, um zu prüfen, ob die App unter Android Automotive OS ausgeführt wird. Suchen Sie dazu nach der Funktion FEATURE_AUTOMOTIVE
, wie im folgenden Beispiel gezeigt:
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Wenn Ihre App auch eine Android Auto-Komponente hat, können Sie alternativ die CarConnection API aus der Android for Cars App-Bibliothek verwenden, um zu erkennen, ob die App unter Android Automotive OS oder Android Auto ausgeführt wird oder ob sie überhaupt nicht mit einem Auto verbunden ist.
Beachten Sie für die Funktion „Bild-im-Bild“ (PiP) die etablierten Best Practices, um zu prüfen, ob die Funktion verfügbar ist, und reagieren Sie entsprechend.
Offlineszenarien verarbeiten
Autos sind zwar immer häufiger mit dem Internet verbunden, Apps sollten aber auch ohne Internetverbindung funktionieren, z. B. in den folgenden Fällen:
- Nutzer können die mobilen Daten deaktivieren, die im Rahmen eines Abopakets vom Autohersteller angeboten werden.
- In bestimmten Gebieten ist der Zugriff auf mobile Daten möglicherweise eingeschränkt.
- Autos mit WLAN-Funkschnittstellen befinden sich möglicherweise außerhalb der WLAN-Reichweite oder ein OEM deaktiviert das WLAN zugunsten eines Mobilfunknetzes.
Bereiten Sie sich darauf vor, diese Szenarien in Ihrer App zu handhaben, indem Sie die Funktionalität, die vom Internetzugriff abhängt, schrittweise herunterfahren, z. B. durch das Anbieten von Offlineinhalten. Weitere Informationen finden Sie in den Best Practices für die Netzwerkoptimierung.
Alternative Ressourcen verwenden
Sie können den car
-Ressourcenqualifizierer verwenden, um alternative Ressourcen bereitzustellen, wenn Ihre App auf einem Android Automotive OS-Fahrzeug ausgeführt wird. Wenn Sie beispielsweise Dimensionsressourcen zum Speichern von Abständewerten verwenden, können Sie einen größeren Wert für den car
-Ressourcensatz verwenden, um Touch-Ziele zu vergrößern.
App vertreiben
Nachdem Sie Ihre App anhand der Qualitätsrichtlinien für Auto-Apps für die jeweilige Kategorie getestet haben, können Sie sie über Google Play für Autos mit integriertem Google-System anbieten. Weitere Informationen zum Veröffentlichungsprozess finden Sie unter In Autos vertreiben.
Feedback zu geparkten Apps geben
Wenn Sie bei der Entwicklung Ihrer Park-App für Android Automotive OS auf ein Problem stoßen oder eine Funktionsanfrage haben, können Sie dies über den Google Issue Tracker melden. Achten Sie darauf, in der Vorlage für Probleme alle angeforderten Informationen anzugeben. Bevor Sie ein neues Problem melden, sehen Sie in der Liste der Probleme nach, ob es bereits gemeldet wurde. Sie können Probleme abonnieren und dafür stimmen, indem Sie im Tracker auf den Stern für ein Problem klicken. Weitere Informationen finden Sie unter Probleme abonnieren.