Geparkte Apps für Android Automotive OS erstellen

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

Um mit der Entwicklung Ihrer App für Android Automotive OS zu beginnen, testen Sie zuerst Ihre vorhandene in einem Android Automotive OS-Emulator aus. Um einen Emulator einzurichten, folgen Sie der Schritte im Artikel Mit dem Android Automotive OS-Emulator testen beschrieben. Anschließend können Sie die App ausführen, indem Sie der Anleitung unter Führen Sie Ihre App im Emulator aus.

Achten Sie beim Ausführen Ihrer App auf Kompatibilitätsprobleme, z. B. Folgendes:

  • Infotainment-Displays haben eine feste Ausrichtung. Um die Auto App-Qualitätsrichtlinien erfüllt, müssen Apps das Hoch- und Querformat unterstützen Ausrichtungen.
  • APIs, die auf anderen Geräten verfügbar sind, sind unter Umständen nicht auf Android Automotive OS verfügbar. Beispielsweise sind einige APIs der Google Play-Dienste nicht unter Android verfügbar. Automotive OS Weitere Informationen findest du im Abschnitt Funktionen deaktivieren. finden Sie weitere Informationen zum Umgang mit diesen Problemen.

Manifestdateien Ihrer App konfigurieren

Damit Ihre App auf Android Automotive OS ausgerichtet werden kann, müssen bestimmte Manifesteinträge vorhanden sein. Damit werden Apps, die auf Android Automotive OS ausgerichtet sind, im Play Store mit einem separaten Automotive OS-Release-Typ. Sie werden durch manuelle Überprüfung, um sicherzustellen, dass sie für die Nutzung im Auto sicher sind. Weitere Informationen finden Sie unter Android-Apps für Autos vertreiben. Details.

Erforderliche Android Automotive OS-Funktionen

Für Android Automotive OS entwickelte Apps, die in einem Auto im Play Store angeboten werden sollen muss die folgenden <uses-feature> enthalten Element in AndroidManifest.xml Datei:

<manifest ...>
    ...
    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />
    ...
</manifest>

Für Apps, die für andere Branchen eingereicht werden, kann das im vorherigen Codebeispiel gezeigte <uses-feature>-Element nicht deklariert werden, da sie nicht von fahrzeugspezifischer Hardware abhängig sein dürfen. Um also dieselbe App für die Automobilbranche nicht aus dem Automobilbereich, müssen Sie mindestens zwei Varianten Ihrer App generieren: eine für Fahrzeuge und ein anderes für Mobilgeräte. Weitere Informationen zum Erstellen dieser separaten Varianten finden Sie in der folgenden Dokumentation:

Die beiden Varianten der App können denselben Paketnamen haben, haben verschiedene Versionscodes, da sie in die Play Store-Tracks hochgeladen werden. separat.

Statt separate Flavors zu verwenden, können Sie auch separate Pakete Namen für Ihre APKs oder App Bundles für Mobilgeräte und Autos zu erhalten. Um die Bedeutung Vor- und Nachteile der einzelnen Ansätze, siehe Paketnamen im Entwicklerleitfaden für Medien-Apps.

Zusätzlich zu dem 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"/>

Indem Sie diese Funktionen explizit als nicht erforderlich festlegen, sorgen Sie dafür, dass Ihre App steht nicht im Konflikt mit verfügbaren Hardwarefunktionen von Android Automotive OS-Geräten.

Sicherstellen, dass keine für die Ablenkung optimierten Aktivitäten vorhanden sind

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 deiner App automatisch blockiert vom Betriebssystem aus, wenn das Auto in den Fahrmodus wechselt, um Ablenkungen zu reduzieren. . 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:

App für Android Automotive OS optimieren

Um die Nutzerfreundlichkeit zu verbessern, sollten Sie Folgendes beachten: bei der Entwicklung Ihrer App für Android Automotive OS berücksichtigen.

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.

Lesen Sie insbesondere den Artikel Unterstützung verschiedener Bildschirme Größen und Migrate Ihrer UI auf responsive Layouts anwenden Anleitungen dazu, wie Sie große Displayformate optimal nutzen, sowie Medien und Spiele für Designinspirationen und Anleitungen.

Andere Optimierungen für große Bildschirme wie die Kompatibilität mit Eingabegeräten sind für Android Automotive OS nicht so direkt von Vorteil, können aber dennoch die Nutzerfreundlichkeit verbessern. Bei der Tastaturnavigation wird beispielsweise das dieselben APIs wie die Drehnavigation, sodass alle hier vorgenommenen Optimierungen beide Formfaktoren nutzen können.

Mit Fenstereinlagen und Display-Aussparungen 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. Es kann jedoch sein, dass Ihre App die Systemleisten ausblendet, zeichnen Sie dahinter Inhalte oder zeigen Sie Inhalte in einem Display-Aussparung, wie beschrieben im Artikel App innerhalb von Fenstereinfügungen anlegen (in englischer Sprache) 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

Systembalken in Fahrzeugen können eine andere Größe und Position haben als andere Formfaktoren. Navigationsleisten können beispielsweise links, oder unten auf dem Bildschirm angezeigt 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 dürfen, 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 Klimasteuerung 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 auch steuern, ob Apps die Farbe und Transparenz der Systembalken, um sicherzustellen, dass die Balken und Elemente immer deutlich sichtbar sind. Wenn Ihre App Achten Sie darauf, dass sich nur nicht kritische Inhalte hinter Systemleisten befinden. Diese Inhalte sind möglicherweise nicht sichtbar, wenn der OEM des Geräts das Festlegen der Farbe verhindert. oder die Lichtdurchlässigkeit der Balken.

<!-- 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 die Größe, Anzahl, den Typ oder die Position der Systemleisten treffen. Verwenden Sie stattdessen die Window Insets APIs, der App-Inhalte relativ zu den Systemleisten. Weitere Informationen finden Sie unter Edge-to-Edge-Inhalte in der App präsentieren finden Sie weitere Informationen zur Verwendung dieser APIs. Hartcodierte Padding-Werte, die zwar nie empfohlen, Inhalte werden möglicherweise auf anderen Geräten im sicheren Bereich aufbewahrt, in Autos nicht.

An ungleichförmig geformte Displays anpassen

Zusätzlich zu den rechteckigen Displays haben manche Fahrzeuge möglicherweise eine unregelmäßige Form wie in Abbildung 1 dargestellt:

Ein Diagramm eines Android Automotive OS-Geräts mit einem Display, das auf der rechten Seite gebogen ist.
Abbildung 1: Android Automotive OS-Gerät mit einem Display, auf der rechten Seite gekrümmt ist. Der grüne Bereich ist das sichere Rechteck, sich mit dem Markierungsrahmen der Darstellungsaussparung der Kurve überschneiden.

Wenn Ihre App nicht randlos gerendert wird, müssen Sie nichts unternehmen. im sicheren Bereich gerendert werden.

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. Wenn Sie Letzteres auswählen, Weitere Informationen findest du unter Unterstützung von Display-Aussparungen. Details zu den APIs für Display-Aussparungen

Wenn Ihre App in der Display-Aussparung gerendert wird und Sie unterschiedliches Verhalten von Android Automotive OS und Mobilgeräten, siehe Deaktivieren Sie Funktionen, wenn dies in Ihrer App der Fall ist. und verwenden alternative Ressourcen, wenn Ihre App legt dieses Verhalten mithilfe von Ressourcendateien fest.

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 wird nur ein Teil der Google Play-Dienste ist unter Android Automotive OS verfügbar. Siehe Google Play-Dienste für Autos für weitere Informationen Details.

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 verwenden Sie die CarConnection API des Android for Cars-App-Bibliothek, um zu erkennen, ob die App die unter Android Automotive OS oder Android Auto laufen auf ein Auto übertragen.

Für Bild im Bild (BiB) solltest du die etablierten Best Practices überprüfen, ob die verfügbar ist und angemessen reagieren.

Mit Offlineszenarien umgehen

Während Autos immer mehr mit dem Internet verbunden sind, werden Apps empfohlen, ohne Internetverbindung ausgeführt werden, wie in den folgenden Fällen:

  • Nutzer können die mobilen Daten deaktivieren, die im Rahmen eines Abopakets vom Autohersteller angeboten werden.
  • In bestimmten Regionen ist der Zugriff auf mobile Daten möglicherweise eingeschränkt.
  • Autos mit WLAN-Funkschnittstellen befinden sich möglicherweise nicht in Reichweite WLAN zugunsten eines Mobilfunknetzes deaktivieren.

Bereiten Sie sich darauf vor, diese Szenarien in Ihrer App durch Graceful Degrading zu bewältigen. Funktionalität, die vom Internetzugang abhängt, z. B. von Offline-Inhalten. 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 Kategorie und Android Automotive OS-Build davon mit notwendigen Änderungen für seine kannst du sie dann in Formfaktor-Tracks für Automotive OS im Play Store Siehe Android-Apps für Autos vertreiben findest du weitere Informationen zur Veröffentlichung.

Feedback zu geparkten Apps geben

Wenn bei der Entwicklung des geparkten Fahrzeugs für Android Automotive OS erstellt, könnt ihr dies über die Problemverfolgung von Google Geben Sie alle erforderlichen Informationen in der Problemvorlage an. Vorher ein neues Problem melden, prüfen Sie, ob es bereits in der Problemliste aufgeführt ist. 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.

Neues Problem erstellen