Mit Android Automotive OS können Nutzer Apps in ihrem Auto installieren. Um Nutzer dieser Plattform nutzen, müssen Sie eine für Autofahrer optimierte App anbieten, die kompatibel mit Android Automotive OS. Sie können fast den gesamten Code wiederverwenden und in Ihrer Android Auto-App, aber Sie müssen einen separaten Build erstellen, die Anforderungen auf dieser Seite erfüllt.
Entwicklungsübersicht
Das Hinzufügen der Unterstützung für Android Automotive OS erfordert nur wenige Schritte, wie beschrieben finden Sie in den folgenden Abschnitten:
- Aktiviere Funktionen der Automobilbranche in Android Studio.
- Automobilmodul erstellen
- Aktualisiere deine Gradle-Abhängigkeiten.
- Optional können Sie Einstellungen und Anmeldeaktivitäten implementieren.
- Optional können Sie die Option Hinweise auf Medienhost lesen aufrufen.
Designüberlegungen
Android Automotive OS kümmert sich um das Layout der Medieninhalte, vom Medienbrowserdienst Ihrer App empfangen. Das bedeutet, dass Ihre App die Benutzeroberfläche nicht zeichnet und keine Ihre Aktivitäten, wenn ein Nutzer die Medienwiedergabe auslöst.
Wenn Sie Einstellungen oder Anmeldeaktivitäten implementieren, Diese Aktivitäten müssen für Fahrzeuge optimiert sein. Weitere Informationen finden Sie in den Designrichtlinien. für Android Automotive OS erstellen, während Sie diese Bereiche Ihrer App entwerfen.
Projekt einrichten
Sie müssen mehrere Teile Ihres App-Projekts einrichten, um Android Automotive OS unterstützt.
Automotive-Funktionen in Android Studio aktivieren
Verwende Android Studio 4.0 oder höher, um sicherzustellen, dass alle Automotive OS-Funktionen aktiviert.
Automobilmodul erstellen
Einige Komponenten von Android Automotive OS, wie das Manifest, haben plattformspezifischen Anforderungen. Erstellen Sie ein Modul, das die für diese Komponenten getrennt von anderem Code in Ihrem Projekt, wie z. B. der für Ihre Telefon-App verwendet wird.
So fügen Sie Ihrem Projekt ein Automobilmodul hinzu:
- Klicken Sie in Android Studio auf File > Neu > Neues Modul.
- Wählen Sie Automotive Module aus und klicken Sie auf Next.
- Geben Sie einen Anwendungs-/Bibliotheksnamen ein. Dies ist der Name, den Nutzer für für deine App auf Android Automotive OS.
- Geben Sie einen Modulnamen ein.
- Passen Sie den Paketnamen an den Namen Ihrer App an.
Wählen Sie als Minimum SDK die Option API 28: Android 9.0 (Pie) aus und klicken Sie dann auf Weiter.
Alle Autos, die Android Automotive OS unterstützen, laufen unter Android 9 (API-Level 28) oder Wenn Sie diesen Wert auswählen, wird also eine Ausrichtung auf alle kompatiblen Fahrzeugen.
Wählen Sie Keine Aktivität aus und klicken Sie auf Fertigstellen.
Nachdem du das Modul in Android Studio erstellt hast, öffne die AndroidManifest.xml
in
Ihr neues Automobilmodul:
<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>
Die application
enthält Standard-App-Informationen sowie ein
uses-feature
, das die Unterstützung von Android Automotive OS deklariert. Beachten Sie, dass es
keine im Manifest deklarierten Aktivitäten sind.
Wenn Sie Einstellungen oder Anmeldeaktivitäten implementieren, fügen Sie hier einfügen. Diese Aktivitäten werden vom System mit expliziten Intents ausgelöst und sind die einzigen Aktivitäten, die du im Manifest für dein Android Automotive OS-App
Nachdem Sie Einstellungen oder Anmeldeaktivitäten hinzugefügt haben, vervollständigen Sie Ihre Manifestdatei, indem Sie
Attribut android:appCategory="audio"
im Element application
festlegen
und fügen Sie die folgenden uses-feature
-Elemente hinzu:
<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>
Durch das explizite Festlegen dieser Funktionen auf required="false"
wird sichergestellt,
Deine App steht nicht in Konflikt mit verfügbaren Hardwarefunktionen in Automotive OS
Geräte.
Medienunterstützung für Android Automotive OS deklarieren
Erkläre mit dem folgenden Manifesteintrag, dass deine App Android Automotive OS:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Dieser Manifesteintrag verweist auf eine XML-Datei, in der das Automotive-Objekt deklariert die Ihre App unterstützt.
Wenn du angeben möchtest, dass du eine Medien-App hast, füge ein
XML-Datei mit dem Namen „automotive_app_desc.xml
“ in das Verzeichnis res/xml/
in Ihrem
Projekt arbeiten. Nehmen Sie Folgendes in diese Datei auf:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Intent-Filter
Android Automotive OS verwendet explizite Intents, um Aktivitäten in Ihren Medien auszulösen
Nehmen Sie keine Aktivitäten auf,
CATEGORY_LAUNCHER
oder ACTION_MAIN
-Intent
in der Manifestdatei.
Aktivitäten wie im folgenden Beispiel zielen in der Regel auf ein Telefon oder einige einem anderen Mobilgerät. Deklarieren Sie diese Aktivitäten im Modul, entwickelt die Smartphone-App, nicht das Modul für Android Automotive OS.
<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>
Gradle-Abhängigkeiten aktualisieren
Wir empfehlen, den Medienbrowser beizubehalten. in einem separaten Modul, das Sie zwischen Ihrer Smartphone-App und Ihrem Automobil- -Modul. Wenn Sie diesen Ansatz verwenden, müssen Sie Ihre um das freigegebene Modul einzubeziehen, wie im folgenden Snippet gezeigt:
my-auto-module/build.gradle
Cool
buildscript { ... dependencies { ... implementation project(':shared_module_name') } }
Kotlin
buildscript { ... dependencies { ... implementation(project(":shared_module_name")) } }
Einstellungen und Anmeldeaktivitäten implementieren
Neben Ihrem Medienbrowserdienst können Sie auch für Fahrzeuge optimierte Einstellungen und Anmeldeaktivitäten für Ihre Android Automotive OS-App. Mit diesen Aktivitäten können Sie App-Funktionen bereitstellen, die nicht im Android Media APIs
Implementiere diese Aktivitäten nur, wenn deine Android Automotive OS-App Nutzer müssen sich anmelden oder App-Einstellungen festlegen können. Diese Aktivitäten sind nicht die von Android Auto verwendet werden.
Arbeitsabläufe für Aktivitäten
Das folgende Diagramm zeigt, wie ein Nutzer mit Ihren Einstellungen Anmeldeaktivitäten unter Verwendung von Android Automotive OS:
Abbildung 1: Einstellungen und Workflows für Anmeldeaktivitäten.
Ablenkungen durch Einstellungen und Anmeldeaktivitäten vermeiden
Um sicherzustellen, dass Ihre Einstellungen und/oder Anmeldeaktivitäten nur für die Verwendung verfügbar sind
<activity>
-Element(e) muss/haben, während das Fahrzeug geparkt ist
dürfen das folgende <meta-data>
-Element nicht enthalten. Deine App wird abgelehnt
wenn ein solches Element vorhanden ist.
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Aktivität zu Einstellungen hinzufügen
Sie können eine Aktivität für Fahrzeugeinstellungen hinzufügen, damit Nutzer deine App in ihrem Auto konfigurieren können. Deine Einstellungen können auch andere Workflows bereitstellen, z. B. die An- oder Abmeldung oder das Nutzerkonto wechseln. Denken Sie daran, dass diese Aktivität die durch eine App mit Android Automotive OS ausgelöst wird. Telefon-Apps verbunden mit und nicht für Android Auto.
Einstellungsaktivität deklarieren
Sie müssen Ihre Einstellungsaktivität in der Manifestdatei Ihrer App deklarieren, wie unter das folgende Code-Snippet:
<application>
...
<activity android:name=".AppSettingsActivity"
android:exported="true"
android:theme="@style/SettingsActivity"
android:label="@string/app_settings_activity_title">
<intent-filter>
<action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
</intent-filter>
</activity>
...
</application>
Einstellungen implementieren
Wenn ein Nutzer deine App startet, erkennt Android Automotive OS Folgendes:
in den Einstellungen, die Sie deklariert haben, und zeigt ein Angebot, z. B. ein Symbol, an.
Der Nutzer kann dieses Angebot über das Display seines Autos antippen oder auswählen
auf die Aktivität. Android Automotive OS sendet die ACTION_APPLICATION_PREFERENCES
die deine App auffordert, deine Einstellungen zu starten.
Im weiteren Verlauf dieses Abschnitts erfahren Sie, wie Sie den Code der universellen UAMP-Beispiel-App (Android Music Player) um eine Einstellungsaktivität für Ihre App zu implementieren.
Laden Sie zuerst den Beispielcode herunter:
# Clone the UAMP repositorygit clone https://github.com/android/uamp.git
# Fetch the appropriate pull request to your local repositorygit fetch origin pull/323/head:NEW_LOCAL_BRANCH_NAME
# Switch to the new branchgit checkout NEW_LOCAL_BRANCH_NAME
So implementieren Sie Ihre Aktivität:
- Kopieren Sie den Ordner
automotive/automotive-lib
in Ihr Automotive-Modul. - Definieren Sie einen Einstellungsbaum wie
automotive/src/main/res/xml/preferences.xml
PreferenceFragmentCompat
implementieren die in den Einstellungen angezeigt werden. In denSettingsFragment.kt
undSettingsActivity.kt
-Dateien in UAMP und den Android-Einstellungen finden Sie weitere Informationen.
Berücksichtigen Sie beim Implementieren Ihrer Einstellungsaktivität die folgenden Best Practices für die Verwendung von einige Komponenten der Preference-Bibliothek:
- Maximal zwei Ebenen unterhalb der Hauptansicht Ihre Einstellungen.
- Verwenden Sie keinen
DropDownPreference
. Verwenden Sie stattdessen einenListPreference
. - Organisationskomponenten:
<ph type="x-smartling-placeholder">
- </ph>
PreferenceScreen
- Dies muss die oberste Ebene Ihrer Einstellungsstruktur sein.
PreferenceCategory
- Wird verwendet, um
Preference
-Objekte zu gruppieren. - Fügen Sie ein
title
ein.
- Wird verwendet, um
- Fügen Sie in alle folgenden Komponenten
key
undtitle
ein. Sie können auchsummary
,icon
oder beides enthalten: <ph type="x-smartling-placeholder">- </ph>
Preference
- Passe die Logik im
onPreferenceTreeClick()
-Callback deinesPreferenceFragmentCompat
-Implementierung
- Passe die Logik im
CheckBoxPreference
- Kann für bedingten Text
summaryOn
odersummaryOff
anstelle vonsummary
enthalten.
- Kann für bedingten Text
SwitchPreference
- Kann für bedingten Text
summaryOn
odersummaryOff
anstelle vonsummary
enthalten. - Kann
switchTextOn
oderswitchTextOff
haben.
- Kann für bedingten Text
SeekBarPreference
- Fügen Sie
min
,max
unddefaultValue
hinzu.
- Fügen Sie
EditTextPreference
dialogTitle
,positiveButtonText
undnegativeButtonText
einschließen.- Kann
dialogMessage
und/oderdialogLayoutResource
haben.
com.example.android.uamp.automotive.lib.ListPreference
- Wird hauptsächlich aus
ListPreference
abgeleitet. - Wird zur Anzeige einer Single-Choice-Liste mit
Preference
-Objekten verwendet. - Muss ein Array von
entries
und eine entsprechendeentryValues
haben.
- Wird hauptsächlich aus
com.example.android.uamp.automotive.lib.MultiSelectListPreference
- Wird hauptsächlich aus
MultiSelectListPreference
abgeleitet - Wird zur Anzeige einer Multiple-Choice-Liste mit
Preference
-Objekten verwendet. - Muss ein Array von
entries
und eine entsprechendeentryValues
haben.
- Wird hauptsächlich aus
Anmeldeaktivität hinzufügen
Wenn sich ein Nutzer bei Ihrer App anmelden muss, bevor er sie verwenden kann, können Sie eine für Fahrzeuge optimierte Anmeldeaktivität, das An- und Abmelden in deiner App übernimmt. Du kannst auch An- und Abmeldemöglichkeiten hinzufügen. von Workflows zu einer Einstellungsaktivität, aber verwenden Sie spezielle Anmeldeaktivität, wenn Ihre App erst verwendet werden kann, wenn ein Nutzer angemeldet sind. Denken Sie daran, dass diese Aktivität nur von einer App ausgelöst wird, die auf Android Automotive OS Mit Android Auto verbundene Smartphone-Apps verwenden es nicht.
Anmeldung beim Start der App erforderlich
Wenn Sie festlegen möchten, dass sich Nutzer anmelden müssen, bevor sie Ihre App verwenden können, verwenden Sie den Medienbrowser muss der Dienst Folgendes tun:
- Senden Sie in der Methode
onLoadChildren()
Ihres Dienstes einnull
-Ergebnis mithilfe dessendResult()
. PlaybackStateCompat
für die Mediensitzung festlegen anSTATE_ERROR
setState()
verwenden . Dadurch wird Android Automotive OS mitgeteilt, dass bis zu wurde der Fehler behoben.PlaybackStateCompat
für die Mediensitzung festlegen Fehlercode anERROR_CODE_AUTHENTICATION_EXPIRED
. Dadurch wird Android Automotive OS mitgeteilt, dass sich der Nutzer authentifizieren muss.PlaybackStateCompat
für die Mediensitzung festlegen imsetErrorMessage()
. Da diese Fehlermeldung an den Nutzer gerichtet ist, lokalisieren Sie sie für die aktuelle Sprache des Nutzers aus.PlaybackStateCompat
für die Mediensitzung festlegen mit dersetExtras()
. Fügen Sie die folgenden beiden Schlüssel hinzu:PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
: eine Zeichenfolge, die auf der Schaltfläche angezeigt wird, mit der der Anmelde-Workflow beginnt. Da dieser String für den Nutzer sichtbar ist, lokalisieren Sie ihn für das aktuelle SprachePLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT
: einPendingIntent
-Element, das die zu Ihrer Anmeldeaktivität, wenn der Nutzer auf die Schaltfläche tippt, die vomPLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
Das folgende Code-Snippet zeigt, wie Nutzer sich in Ihrer App anmelden müssen bevor Sie Ihre App verwenden:
Kotlin
import androidx.media.utils.MediaConstants val signInIntent = Intent(this, SignInActivity::class.java) val signInActivityPendingIntent = PendingIntent.getActivity(this, 0, signInIntent, 0) val extras = Bundle().apply { putString( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL, "Sign in" ) putParcelable( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT, signInActivityPendingIntent ) } val playbackState = PlaybackStateCompat.Builder() .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f) .setErrorMessage( PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED, "Authentication required" ) .setExtras(extras) .build() mediaSession.setPlaybackState(playbackState)
Java
import androidx.media.utils.MediaConstants; Intent signInIntent = new Intent(this, SignInActivity.class); PendingIntent signInActivityPendingIntent = PendingIntent.getActivity(this, 0, signInIntent, 0); Bundle extras = new Bundle(); extras.putString( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL, "Sign in"); extras.putParcelable( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT, signInActivityPendingIntent); PlaybackStateCompat playbackState = new PlaybackStateCompat.Builder() .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f) .setErrorMessage( PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED, "Authentication required" ) .setExtras(extras) .build(); mediaSession.setPlaybackState(playbackState);
Legen Sie nach der erfolgreichen Authentifizierung des Nutzers die PlaybackStateCompat
fest.
in einen anderen Zustand als STATE_ERROR
,
und leitet den Nutzer zurück zu Android Automotive OS, indem er die Methode
finish()
.
Anmeldeaktivität implementieren
Google bietet eine Vielzahl von Identitätstools an. mit der Sie Nutzern helfen können, sich in ihrem Auto bei Ihrer App anzumelden. Einige wie Firebase Authentication bieten Full-Stack-Toolkits, bei der Entwicklung benutzerdefinierter Authentifizierungsfunktionen. Andere Tools nutzen vorhandene Anmeldedaten eines Nutzers oder andere Technologien, um eine nahtlose Anmeldeerfahrungen für Nutzer.
Die folgenden Tools erleichtern Ihnen die Anmeldung. für Nutzer, die sich zuvor auf einem anderen Gerät angemeldet haben:
- Anmeldung und Registrierung mit One Tap:wenn Sie One Tap bereits implementiert haben für andere Geräte, wie etwa die Telefon-App, Android Automotive OS-App zur Unterstützung bestehender One Tap-Nutzer
- Google Log-in:Wenn Sie Google Log-in bereits implementiert haben für andere Geräte wie etwa Ihre Telefon-App, implementieren Sie Melde dich in deiner Android Automotive OS-App an, um die bestehende Google-Anmeldung zu unterstützen Nutzenden.
- Autofill mit Google:Wenn Nutzer die Funktion „Autofill mit Google“ aktiviert haben anderen Android-Geräten verwenden, werden die Anmeldedaten im Google Passwortmanager gespeichert. Wenn sich diese Nutzer in Ihrer Android Automotive OS App anmelden, Google schlägt relevante gespeicherte Anmeldedaten vor. Die Verwendung von Autofill mit Google erfordert ohne Aufwand bei der Anwendungsentwicklung. Anwendungsentwickler können jedoch ihre Apps optimieren, um bessere Ergebnisse zu erzielen. Autofill mit Google wird von allen Geräten mit Android 8.0 unterstützt. (API-Level 26) oder höher, einschließlich Android Automotive OS.
Account Manager verwenden
Für Android Automotive OS-Apps mit Authentifizierung muss Folgendes verwendet werden: AccountManager, und zwar aus den folgenden Gründen:
- Bessere Nutzerfreundlichkeit und einfachere Kontoverwaltung:Nutzer können alle Kampagnen problemlos über das Menü „Konten“ in den Systemeinstellungen, einschließlich der Anmeldung und sich abmelden.
- „Gast“ :Autos sind gemeinsam genutzte Geräte, das heißt, OEMs können
„Gast“ in denen keine Konten hinzugefügt werden können. Dieses
Die Einschränkung wird mit
DISALLOW_MODIFY_ACCOUNTS
erreicht fürAccountManager
.
Berechtigungen
Wenn Sie Berechtigungen vom Nutzer anfordern müssen, verwenden Sie denselben Ablauf wie bei die Authentifizierungsaktivität oder die Einstellungsaktivität in den Aktivitätsworkflows. Diagramm aus einem vorherigen Abschnitt.
Hinweise für Medienhosts lesen
Abhängig von der Systemanwendung (einschließlich ihrer Version), die eine Verbindung Medienbrowserdienst verwenden, kann Ihre Anwendung die folgenden Extras erhalten:
Fehlerbehandlung
Fehler in Medien-Apps unter Android Automotive OS werden über die Medien kommuniziert.
Sitzung PlaybackStateCompat
. Legen Sie für alle Fehler einen entsprechenden Fehler fest.
und Fehlermeldung in PlaybackStateCompat
. Dadurch erscheint Toast
auf der Benutzeroberfläche.
Wenn ein Fehler auftritt, die Wiedergabe aber fortgesetzt werden kann, gib ein nicht schwerwiegendes Problem aus Fehler. So kann ein Nutzer vielleicht Musik in einer App abspielen, bevor er sich anmeldet, muss er sich anmelden, bevor er einen Song überspringen kann. Wenn Sie einen nicht schwerwiegenden Fehler verwenden, kann das System dem Nutzer vorschlagen, dass er sich anmeldet, ohne die Wiedergabe für das aktuelle Medienelement.
Wenn Sie einen nicht schwerwiegenden Fehler ausgeben, behalten Sie den Rest des
PlaybackStateCompat
unverändert, abgesehen vom Fehlercode und der Fehlermeldung. Mit diesem
ermöglicht die Wiedergabe des aktuellen Medienelements, während der Nutzer
entscheidet, ob er sich anmelden möchte.
Wenn die Wiedergabe nicht möglich ist, z. B. wenn keine Internetverbindung besteht
keine Offline-Inhalte vorhanden sind, setzen Sie den Status PlaybackStateCompat
auf STATE_ERROR
.
Löschen Sie bei nachfolgenden Aktualisierungen von PlaybackStateCompat
alle Fehlercodes
und Fehlermeldungen, um zu vermeiden, dass mehrere Warnungen für denselben Fehler angezeigt werden.
Wenn Sie einen Suchbaum nicht laden können, z. B. wenn Sie
Authentifizierung erforderlich und der Nutzer ist nicht angemeldet – senden Sie ein Feld
Baum durchsuchen. Um dies anzugeben, geben Sie ein Null-Ergebnis von onLoadChildren()
für
dem Root-Medienknoten. In diesem Fall zeigt das System eine Vollbildansicht an,
Fehler mit der in PlaybackStateCompat
angegebenen Fehlermeldung.
Behebbare Fehler
Wenn ein Fehler behoben werden kann, geben Sie zusätzlich die folgenden beiden Extras im Feld
PlaybackStateCompat
:
PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
: ein Label für die Schaltfläche, mit der der Fehler behoben werden kann. Da dieser String für den Nutzer, lokalisieren Sie ihn für die aktuelle Sprache des Nutzers.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT
: diePendingIntent
, die die Schaltfläche ausführt, um den Fehler zu beheben, z. B. indem du deine Anmeldeaktivitäten startest.
Behebbare Fehler werden als Dialog
angezeigt und können von Nutzern nur behoben werden, wenn
steht das Auto an.
Fehlerfälle testen
Prüfen Sie, ob Ihre Anwendung Fehler in allen Szenarien ordnungsgemäß verarbeitet, einschließlich:
- Verschiedene Produktvarianten, z. B. kostenlos oder Premium oder angemeldet im Vergleich zu abgemeldeten
- Verschiedene Fahrtstatus:z. B. „geparkt“ oder „Fahrt“
- Verschiedene Verbindungsstatus, z. B. online oder offline
Weitere Überlegungen
Behalte bei der Entwicklung von Android Automotive die folgenden Punkte im Hinterkopf Betriebssystem-App:
Offlineinhalte
Implementieren Sie gegebenenfalls die Unterstützung für die Offlinewiedergabe. Autos mit Android Automotive Betriebssystem muss eine eigene Datenverbindung haben, d. h. Datentarif ist in den Kosten des Fahrzeugs enthalten oder wird vom Nutzer bezahlt. Die Konnektivität von Fahrzeugen ist erwartungsgemäß stärker schwankend als die von Mobiltelefonen. Geräte.
Hier sind ein paar Dinge, die Sie beachten sollten, wenn Sie Ihren Offline-Support in Betracht ziehen Strategie:
- Der beste Zeitpunkt zum Herunterladen von Inhalten ist, wenn die App verwendet wird.
- Gehen Sie nicht davon aus, dass WLAN verfügbar ist. Ein Auto kommt vielleicht nie in Reichweite des WLANs, oder der OEM hat WLAN zugunsten eines Mobilfunknetzes deaktiviert.
- Es ist zwar in Ordnung, die Inhalte, die die Nutzer erwarten, intelligent im Cache zu speichern, sollten Sie dem Nutzer die Möglichkeit geben, Ihre Einstellungen.
- Der Speicherplatz auf dem Auto ist unterschiedlich, daher sollten Nutzer die Möglichkeit haben, zum Beispiel über eine Option in Ihrem Einstellungen.
WebView-Unterstützung
WebViews werden in Android Automotive OS unterstützt, sind aber nur zulässig für Ihre Einstellungen und Anmeldeaktivitäten. Aktivitäten, die eine WebView verwenden, müssen eine "Schließen" oder „Zurück“ Angebote außerhalb von WebView.
Hier sind einige Beispiele für zulässige Anwendungsfälle für WebViews:
- Anzeigen Ihrer Datenschutzerklärung, Nutzungsbedingungen oder anderer rechtlicher Links in den Einstellungen.
- Ein webbasierter Vorgang für deine Anmeldeaktivitäten.
Wenn Sie ein WebView verwenden, können Sie Folgendes aktivieren: JavaScript.
WebView schützen
Treffen Sie alle möglichen Vorkehrungen, um sicherzustellen, dass Ihr WebView kein
Einstiegspunkt in das Internet. Im folgenden Code-Snippet sehen Sie eine
Beispiel, wie WebView für die im Feld
loadUrl()
Anrufweiterleitungen und
verhindern Weiterleitungen. Wir empfehlen dringend, Absicherungen zu implementieren.
wenn möglich, z. B. wenn Sie
rechtliche Hinweise.
Kotlin
override fun shouldOverrideUrlLoading(webView: WebView, webResourceRequest: WebResourceRequest): Boolean { val originalUri: Uri = Uri.parse(webView.originalUrl) // Check for allowed URLs if (originalUri.equals(Uri.parse(BLANK_URL)) || originalUri.equals(webResourceRequest.url)) { return false } if (webResourceRequest.isRedirect) { logger.w("Redirect detected, not following") return true } setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.url) logger.w( String.format( "Navigation prevented to %s original is %s", webResourceRequest.url, originalUri)) return true }
Java
@Override public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) { Uri originalUri = Uri.parse(webView.getOriginalUrl()); // Check for allowed URLs if (originalUri.equals(Uri.parse(BLANK_URL)) || originalUri.equals(webResourceRequest.getUrl())) { return false; } if (webResourceRequest.isRedirect()) { logger.w("Redirect detected, not following"); return true; } setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.getUrl()); logger.w( String.format( "Navigation prevented to %s original is %s", webResourceRequest.getUrl(), originalUri)); return true; }
Paketnamen
Da Sie ein separates Android Package Kit (APK) für Android Automotive OS vertreiben, können Sie Paketnamen aus Ihrer mobilen App wiederverwenden oder ein neues Paket erstellen Namen. Wenn Sie einen anderen Paketnamen verwenden, hat Ihre App zwei separate Play Store- Einträge. Wenn du deinen aktuellen Paketnamen wieder verwendest, hat deine App einen einen einzigen Eintrag auf beiden Plattformen erstellen.
Dies ist in erster Linie eine geschäftliche Entscheidung. Wenn Sie z. B. ein Team haben, die mobile App und ein eigenes Team, das an Android Automotive arbeitet Betriebssystem-App verwenden, ist es sinnvoll, separate Paketnamen zu haben und jedes eigenen Play Store-Eintrag verwaltet. Es gibt keinen großen Unterschied bei der technischen Aufwand erfordern, um einen der beiden Ansätze zu verwenden.
In der folgenden Tabelle sind einige weitere wichtige Unterschiede zwischen dem aktuellen Paketnamen und mit einem neuen Paketnamen:
Funktion | Gleicher Paketname | Neuer Paketname |
---|---|---|
Store-Eintrag | Single | Mehrere |
Gespiegelte Installation | Ja: „Schnelle App-Neuinstallation“ während des Einrichtungsassistenten | Nein |
Play Store-Überprüfungsprozess | Rezensionen blockieren: Wenn die Überprüfung für ein APK oder andere APKs fehlschlägt die im selben Release eingereicht wurden, | Einzelne Rezensionen |
Statistiken, Messwerte und wichtige Daten | Kombiniert: Sie können nach Fahrzeugdaten filtern. | Aufheben |
Indexierung und Suchranking | Auf dem aktuellen Stand aufbauen | Keine Übertragung |
Integration in andere Apps | Höchstwahrscheinlich sind keine Änderungen erforderlich, vorausgesetzt, der Mediencode wird von beiden APKs gemeinsam verwendet | Eventuell muss die entsprechende App aktualisiert werden, z. B. für die URI-Wiedergabe mit Google Assistant. |
Häufig gestellte Fragen
In den folgenden Abschnitten finden Sie Antworten auf einige häufig gestellte Fragen zu Android Automotive OS
Hardware
Kann meine App auf das Mikrofon zugreifen?
Informationen zu Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind, findest du im Artikel zur Freigabe Dokumentation zur Audioeingabe. Dies ist nicht vor API-Level 29 möglich.
Auf welche Auto-APIs können wir zugreifen und wie?
Sie können sich dabei auf die APIs beschränken, die vom OEM bereitgestellt werden. Prozesse werden entwickelt, um den Zugriff auf diese APIs zu standardisieren.
Apps können über SetProperty()
auf Auto-APIs zugreifen
und GetProperty()
in CarPropertyManager
Weitere Informationen finden Sie im Quellcode.
oder in der Referenzdokumentation,
Liste aller verfügbaren Properties an. Wenn die Eigenschaft annotiert ist
mit @SystemApi
ist sie auf vorinstallierte System-Apps beschränkt.
Welche Arten von Audio-Codecs werden unterstützt?
Weitere Informationen finden Sie in den Details zum Audio-Codec. in der Android-CDD.
Wird Widevine DRM unterstützt?
Ja. Digitale Rechteverwaltung von Wivine wird unterstützt.
Entwicklung und Tests
Gibt es Einschränkungen oder Empfehlungen für die Verwendung von SDKs und Bibliotheken von Drittanbietern?
Für die Verwendung von SDKs und Bibliotheken von Drittanbietern gibt es keine speziellen Richtlinien. Auch wenn Sie SDKs und Bibliotheken von Drittanbietern verwenden, zur Erfüllung aller Qualitätsanforderungen an Auto-Apps.
Kann ich einen Dienst im Vordergrund verwenden?
Der einzige zulässige Anwendungsfall für einen Dienst im Vordergrund ist das Herunterladen von Inhalten für für die Offlinenutzung. Wenn es einen anderen Anwendungsfall für einen Dienst im Vordergrund gibt, Wenn Sie Unterstützung benötigen, wenden Sie sich über das Android Automotive OS-Tool Diskussionsgruppe.
Android Automotive OS-Apps veröffentlichen
Wie veröffentliche ich meine Android Automotive OS-App über die Google Play Console?
Die App-Veröffentlichung ähnelt der Veröffentlichung einer Telefon-App. Sie verwenden einen anderen Formfaktor. So aktivieren Sie die Verwendung von Android Automotive in Ihrer App: Betriebssystem-Formfaktor, gehen Sie so vor:
- Öffnen Sie die Play Console.
- Wählen Sie Ihre App aus.
- Klicke im Menü auf der linken Seite auf Release > Einrichtung > Erweiterte Einstellungen > Formfaktoren:
- Klicken Sie auf Formfaktor hinzufügen > Android Automotive OS und folgen Sie dann den in der Play Console.
Weitere Informationen
Weitere Informationen zu Android Automotive OS finden Sie in den folgenden zusätzlichen Ressourcen.
Produktproben
Leitfäden
- Für Autos entwickeln
- Media Controller Test-App verwenden
- Benachrichtigungen unter Android Automotive OS
- Qualität von Android-Apps für Autos
Blogs
Videos
- How to Build Media Apps for Cars (Android Dev Summit '19)
- Android-Apps für Autos entwickeln (Google I/O'19)
Problem mit Android Automotive OS Media melden
Wenn bei der Entwicklung Ihrer Medien-App für Android Automotive ein Problem auftritt Betriebssystem ist, können Sie dies mit der Problemverfolgung von Google Geben Sie alle erforderlichen Informationen in der Problemvorlage an.
Bevor Sie ein neues Problem melden, prüfen Sie, ob es bereits in den Problemen gemeldet wurde Liste. Sie 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: