Systemkomponenten und User Flows

Das folgende Diagramm zeigt die Komponenten, die mit Medien interagieren:

Systemkomponenten

Abbildung 1: Systemkomponenten

Die Elemente in dieser Abbildung sind in der Tabelle beschrieben:

Komponente Beschreibung
Startbildschirm Stellt andere Oberflächen in der Auto-Benutzeroberfläche dar, auf denen die aktuell wiedergegebene Anzeige angezeigt und gesteuert wird. Medien. In AOSP ist dies der Hauptbildschirm, der beim Start des Systems angezeigt wird. Auf diesem Bildschirm können die Nutzer Details des wiedergegebenen Medienelements anzeigen und eine begrenzte Anzahl Standard- und benutzerdefinierten Aktionen (z. B. Wiedergabe und Pause) hinzugefügt werden.
System-UI Stellt Funktionen bereit, die globale Navigationsoptionen der Benutzeroberfläche umfassen, z. B. zum Navigieren zu Medien.
Assistenten Android bietet verschiedene Sprachassistenten-Apps zur Interaktion mit dem System. Diese Apps können mit Medienquellen im Hintergrund interagieren (z. B. die Wiedergabe eines per Sprachbefehl nicht hören, oder zu „Medien im Vordergrund“ gehen (z. B. Ein Sprachassistent wird angewiesen, die Benutzeroberfläche einer bestimmten Medienquelle anzuzeigen.
App Launcher Alle Android-Apps, einschließlich der Medienquellen, werden im App Launcher gestartet. Medien können eine eigene Medienquellenauswahl präsentieren, die den App Launcher ergänzt oder ersetzt. als Ausgangspunkt für Medien.
Google Play Store Wenn GAS verwendet wird, können Nutzer neue Apps in einem Android-Gerät Bei Medien werden Nutzer nach der Installation von Apps zu den Medien weitergeleitet, um die Anmeldung abzuschließen oder mit der App zu interagieren.
Media Session Manager Android-Systemdienst, der Mediensitzungen aus allen Medienquellen verfolgt und steuert. Es bietet Mechanismen zur Erkennung, wann eine Medienquelle zum Vordergrund der Medien wird Quelle. Medien und alle anderen Apps, die die aktuell wiedergegebene Medienquelle anzeigen (für (z. B. der Startbildschirm), nutzen Sie Media Session Manager, um diese Ereignisse zu erkennen und die UI zu aktualisieren. entsprechend anpassen. Medienquellen interagieren mit Media Session Manager über das Medien Session API.
Radio Spezielle App für die Interaktion mit der Funkhardware Radiosuchanfragen im Radio schnell erkannte Sender auswählen und zwischen den Frequenzbändern wechseln. UI-Komponenten, die sowohl von Radio als auch von Medien genutzt werden, ermöglichen es dem Nutzer, zwischen beiden zu wechseln. User Experiences.
Fahrerablenkungsmotor Der Android-Systemdienst, mit dem UX-Einschränkungen basierend auf dem Fahrstatus des Fahrzeugs festgelegt werden. Auto. Für die Anmeldung und die Einstellungen für Medienquellen, bei denen der Bildschirm direkt über Medienquellen enthält, sorgt dieser Dienst dafür, dass keine unsicheren Inhalte angezeigt werden, wenn das Auto im Fahrzustand ist. OEMs können die Definition dieser Bundesstaaten anpassen und festlegen, wie das System reagiert in solchen Situationen, z. B. durch Einblenden eines blockierenden Bildschirm-Overlays.

Nutzerflüsse

Medien-App-Start

Der Prozess zum Starten von Medien wird unten angezeigt.

Medien-App-Start

Abbildung 2: Medien-App-Start

Medien müssen mit den folgenden impliziten CAR_INTENT_ACTION_MEDIA_TEMPLATE Folgende Informationen können für diesen Intent als Extras genutzt werden:

  • android.car.intent.extra.MEDIA_COMPONENT (optional) String-Extra der den vereinfachten Komponentennamen einer MediaBrowserService in der Medien-App ein, mit der die Medien verbunden werden sollen. Wenn nicht angegeben, werden Medien angezeigt der aktuell ausgewählten Medien-App. Dieser Intent wird aus folgenden Quellen verwendet: Einstiegspunkte:

    • System-UI. Wird verwendet, um zur Medienfunktion zurückzukehren oder um wenn Sie es zum ersten Mal verwenden. In diesem Fall würde der obige Intent ohne Extras, damit Medien die aktuell ausgewählte Medien-App anzeigen.

    • Startbildschirm, Assistant und Benachrichtigungscenter. Nutzer können navigiere zu „Medien“, um die aktuell ausgewählte Medien-App aufzurufen. In jedem Fall wird der implizite Intent ohne Extras ausgelöst.

    • App Launcher Wenn Nutzer eine Medien-App aus der App Launcher, der obige Intent umfasst die CAR_EXTRA_MEDIA_COMPONENT Extra, das die ausgewählte Medien-App enthält. Media bezeichnet dies als neue ausgewählte App und stellt eine Verbindung zu ihr her. Weitere Informationen finden Sie unten im Abschnitt „App“. Integration von Launcher zu Medien.

App Launcher-Integration in Medien

Medien-Apps dürfen keine Aktivitäten bereitstellen, die mit dem Kategorie android.intent.category.LAUNCHER. Daher kann der App Launcher (oder seine muss eine spezielle Logik für die Integration der Medienquellen implementieren:

  • Der App Launcher muss das System nach Paketen scannen, MediaBrowserService.SERVICE_INTERFACE Bei diesen Paketen ruft der App Launcher das Dienstsymbol ähnlich dem ab, das zum Abrufen anderer Aktivitäten.

  • Der App Launcher kombiniert diese Pakete dann mit denen, die android.intent.category.LAUNCHER Aktivitäten. Wenn eine App ein MediaBrowserService-Implementierung und eine Launcher-Aktivität hat, nimmt der Dienst Vorrang.

    Zum Zeitpunkt der Erstellung dieses Artikels kann keine Medienquellen-App eine Launcher-Aktivität bereitstellen.

  • Ein Beispiel für diese Logik finden Sie im AOSP-Code unter AppLauncherUtils#getAllLauncherApps()

Anmeldevorgang und Konfigurationsoptionen

Medien-Apps können eine für Fahrzeuge optimierte Aktivität in den Einstellungen enthalten. Eine solche Aktivität kann zur Implementierung von Nutzerflüssen, die von den Android Media APIs nicht berücksichtigt werden. Beispiele:

  • Anmelden
  • Abmelden
  • Wechsel zwischen Konten
  • Anzeigen, in denen der Nutzer gerade angemeldet ist (falls vorhanden)
  • Dienstkonfiguration

Anmeldevorgang

Abbildung 3: Anmeldevorgang

Diese Einstellungsaktivität wird von der Medien-App mit dem folgenden Intent-Filter deklariert:

<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>

Medien müssen die folgende Logik implementieren:

  • Prüfe, ob die aktuell ausgewählte Medien-App eine Aktivität mit den angegebenen Intent-Filter.

  • Wenn ja, erlauben Sie dem Nutzer, zur Aktivität zu navigieren.

  • Wenn UX-Einschränkungen für Autos gelten (z. B. wenn das Auto in Bewegung ist), sollte dieses Angebot deaktiviert werden, da die Aktivität in den Einstellungen keine für den Treiber optimierte UI ist.

Fehlerbehandlung und erforderliche Anmeldung

Medien interagieren über die Android Media Session API mit Medien-Apps. Im Rahmen dieser API empfangen, empfängt Media ein PlaybackState , das den aktuellen Status der Medien-App kommuniziert.

Der Anmeldevorgang beginnt, wenn sich die Medien-App ändert PlaybackState bis STATE_ERROR einschließlich eines spezifischen Fehlercodes (siehe Details unten). Wenn diese zeigt Medien die Fehlerbeschreibung und eine Option an, mit der man zu einer Anmeldeaktivität navigieren kann. der Medien-App implementiert wird.

Dieser Ablauf kann auch von Apps verwendet werden, um andere Fehlersituationen zu signalisieren (z. B. ein Serververbindungsfehler).

Fehlerbehandlung

Abbildung 4: Fehlerbehandlung

Im Rahmen der normalen PlaybackState-Fehlerbehandlung muss Medien auf die folgende Eingabe prüfen.

  • PlaybackState Fehlercode gleich PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Damit signalisieren Sie, dass die Medien-App zur Fortsetzung des Vorgangs eine Anmeldung erfordert. Andere Fehlercodes können was auf andere Arten von Fehlersituationen hinweist.

  • Fehlermeldung „PlaybackState“ (wird von Medien-Apps über die PlaybackStateCompat.Builder#setErrorMessage ) enthält ein für Menschen lesbare Erklärungen (z. B. „Sie sind nicht angemeldet“). Diese Nachricht muss für die und die Ablenkung muss optimiert werden.

  • Optional kann PlaybackState die folgenden, durch Medien festgelegten Extras enthalten Apps mit dem PlaybackStateCompat.Builder#setExtras mit den folgenden Schlüsseln.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL Legen Sie einen String fest, der enthält die visuell lesbare Nachricht, die auf der Schaltfläche angezeigt werden soll, die der Nutzer zum Starten der zur Anmeldung.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT Festgelegt mit einem PendingIntent wird wird ausgelöst, wenn der Nutzer auf die oben erwähnte Schaltfläche klickt. Dieses PendingIntent auf eine benutzerdefinierte Anmeldeaktivität, die von derselben Medien-App implementiert wurde.

  • PlaybackState-Status ist gleich STATE_ERROR Dies signalisiert, dass kein weiterer Vorgang möglich ist, bis die Anmeldung abgeschlossen ist.