Geparkte Apps für Android Automotive OS erstellen

Android Automotive unterstützt nicht nur Apps, die für die Nutzung beim Fahren entwickelt wurden, Das Betriebssystem unterstützt Browser, Spiele und Videos Du kannst dieselbe App an Autos versenden wie an andere Geräte mit großen Bildschirmen mit nur wenigen geringfügigen Ä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:

  • Infotainmentbildschirme haben eine feste Ausrichtung. Um die Auto App-Qualitätsrichtlinien erfüllt, müssen Apps das Hoch- und Querformat unterstützen Ausrichtungen.
  • Auf anderen Geräten verfügbare APIs sind möglicherweise nicht für Android Automotive verfügbar Betriebssystem Beispielsweise sind einige APIs der Google Play-Dienste nicht unter Android verfügbar. Automotive OS Weitere Informationen findest du im Abschnitt Funktionen deaktivieren. .

Manifestdateien Ihrer App konfigurieren

Für die Ausrichtung auf Android Automotive OS muss deine App bestimmte Manifesteinträge enthalten. 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 nicht zu Fahrzeugen eingereicht wurden, kann die <uses-feature> nicht deklariert werden. wie im vorherigen Codebeispiel dargestellt, da sie nicht von spezielle Hardware verwenden. 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 Informationen zum Erstellen dieser separaten Geschmacksrichtungen 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.

Neben dem im vorherigen Codebeispiel gezeigten Element werden Apps, die für Android Automotive OS muss die folgenden <uses-feature>-Elemente in dem Stammelement <manifest>:

<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 genutzt werden kann, wenn das Fahrzeug geparkt ist, sollten Sie das nicht das folgende <meta-data>-Element in eine beliebige <activity>-Element in deinem Manifest:

<!-- 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, in dem die Video- und Audiowiedergabe angehalten werden muss aus Ihrer App.

<ph type="x-smartling-placeholder">

Kategoriespezifische Manifesteinträge

Zusätzlich zu den oben genannten Anforderungen, die für alle geparkten Apps gelten, gilt Folgendes: Für die Kategorien „Video“ und „Spiele“ gelten 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 Android Automotive OS-Fahrzeugen sind ähnlich groß, und Seitenverhältnis bei Tablets und faltbaren Geräten als bei Smartphones. Daher Die Optimierung deiner App für große Bildschirme kommt auch für Autonutzer von Vorteil.

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 z. B. Eingabe Kompatibilität nicht so direkt vorteilhaft für Android Automotive OS sind, die User Experience zu verbessern. Bei der Tastaturnavigation wird beispielsweise das dieselben APIs wie die Drehnavigation, Von dort vorgenommenen Optimierungen profitieren also beide Formfaktoren.

Mit Fenstereinlagen und Display-Aussparungen arbeiten

Wie auch andere Formfaktoren enthält Android Automotive OS eine System-UI wie Status- und Navigationsleisten sowie die Unterstützung nicht rechteckiger angezeigt wird.

Standardmäßig werden Apps in einem Bereich gezeichnet, der sich nicht mit Systemleisten überschneidet oder Display-Aussparungen. 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 erfüllt. In den folgenden Unterabschnitten finden Sie Details zu wie du deine App für Android Automotive OS optimieren kannst Geräte.

Systemleisten, immersiver Modus und Edge-to-Edge-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. Auch wenn eine Statusleiste auf der und einer Navigationsleiste unten (wie bei den meisten Telefonen und Tablets), ist die Größe dieser Elemente in Autos wahrscheinlich viel größer.

Außerdem können OEMs mit Android Automotive OS festlegen, Apps können Systemleisten zum Aufrufen und Beenden der immersiven App ein- oder ausblenden. Modus an. Wenn Sie z. B. verhindern, dass Apps Durch das Ausblenden der Systemleisten können OEMs sicherstellen, dass Fahrzeugkontrollen wie die Klima Steuerelemente, sind immer auf dem Bildschirm zugänglich. Wenn ein OEM verhindert, dass Apps der Systemleisten passiert nichts, wenn eine App die WindowInsetsController (oder WindowInsetsControllerCompat) APIs zum Ein- oder Ausblenden von Systemleisten Weitere Informationen finden Sie in der Dokumentation zu show und Unter hide erfährst du mehr darüber, wie du feststellen kannst, ob deine App Änderungen an der Einsätze.

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>

Machen Sie keine Annahmen über Größe, Anzahl, oder die Position der Systemleisten. 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:

<ph type="x-smartling-placeholder">
</ph> Ein Diagramm eines Android Automotive OS-Geräts mit einem Display, das
      auf der rechten Seite gekrümmt ist. <ph type="x-smartling-placeholder">
</ph> 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 das Display-Aussparungen verhalten. Sie können dies mithilfe von Ressourcen erreichen, indem Sie das Attribut android:windowLayoutInDisplayCutoutMode Attribut für das Design Ihrer App oder während der Laufzeit indem Sie die layoutInDisplayCutoutMode .

Weil die Arten von Display-Aussparungen auf Android Automotive OS-Geräten vorhanden sind auf Mobilgeräten unterscheiden, verwenden Sie nicht die LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT oder LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, deren Verhalten für die Aussparungen von Mobilgeräten optimiert ist. Stattdessen LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER verwenden oder LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS um entweder immer zu vermeiden oder immer in die Aussparung einzudringen. 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 bestehende mobile App für Android Automotive OS verfügbar machen, sind bestimmte Funktionen möglicherweise nicht relevant oder nicht verfügbar. Für Beispielsweise haben Autos in der Regel keinen Zugang zu Kameras. 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 verwenden Die API, um zu erkennen, ob die App unter Android Automotive OS ausgeführt wird, indem geprüft wird für die 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 mobile Daten im Rahmen eines Abos deaktivieren vom Autohersteller.
  • 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 auf diese Szenarien in Ihrer App vor, indem Sie Graceful Degradierung vornehmen. Funktionalität, die vom Internetzugang abhängt, z. B. von Offline-Inhalten. Weitere Informationen erhalten Sie unter Best Practices zur Optimierung Netzwerk.

Alternative Ressourcen verwenden

Um Ihre App für Autos anzupassen, können Sie den Ressourcen-Qualifier car verwenden, um alternative Ressourcen auf einem Android Automotive OS-Fahrzeug. Wenn Sie beispielsweise Zu speichernde Dimensionsressourcen Padding-Werte können Sie einen höheren Wert für den Ressourcensatz car verwenden, Berührungszielbereiche 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 den Formfaktor-Tracks für Automotive OS auf der 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. Ich können Themen abonnieren und abstimmen, indem Sie auf den Stern für ein Problem in klicken. den Tracker. Weitere Informationen finden Sie unter Eine Ausgabe abonnieren:

Neues Problem erstellen