Systemkomponenten und Benutzerflüsse

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

Systemkomponenten

Abbildung 1. Systemkomponenten

Die Elemente in dieser Abbildung werden in der Tabelle beschrieben:

Komponente Beschreibung
Startbildschirm Stellt andere Oberflächen in der Fahrzeug-Benutzeroberfläche dar, die die aktuell wiedergegebenen Medien anzeigen und steuern. In AOSP ist dies der Hauptbildschirm, der beim Systemstart angezeigt wird. Auf diesem Bildschirm können Benutzer Details zum wiedergegebenen Medienelement anzeigen und eine begrenzte Anzahl von Standard- und benutzerdefinierten Aktionen ausführen (z. B. Wiedergabe und Pause).
System-Benutzeroberfläche Bietet Funktionen, die globale UI-Navigationsoptionen umfassen, z. B. die Navigation zu „Medien“.
Assistenten Android bietet Mechanismen für die Interaktion verschiedener Sprachassistenten-Apps mit dem System. Diese Apps können im Hintergrund mit Medienquellen interagieren (z. B. durch Abspielen eines Lieds als Ergebnis eines Sprachbefehls) oder im Vordergrund zu Medien navigieren (z. B. wenn eine Sprachassistenten-App angewiesen wird, die Benutzeroberfläche eines anzuzeigen). bestimmte Medienquelle).
App-Launcher Alle Android-Apps, einschließlich Medienquellen, werden im App Launcher gestartet. Medien können einen eigenen Medienquellenselektor präsentieren, der den App Launcher als Ausgangspunkt für Medien ergänzt oder ersetzt.
Google Play Store Wenn GAS verwendet wird, finden und installieren Benutzer hier neue Apps auf einem Android-Gerät. Bei Medien werden Benutzer nach der Installation von Apps zu den Medien weitergeleitet, um den Anmeldevorgang abzuschließen oder mit der Interaktion mit der App zu beginnen.
Mediensitzungsmanager Android-Systemdienst, der Mediensitzungen von allen Medienquellen verfolgt und steuert. Es bietet Mechanismen, um zu erkennen, wann eine Medienquelle zur Vordergrundmedienquelle wird. Media und alle anderen Apps, die die aktuell wiedergegebene Medienquelle anzeigen (z. B. den Startbildschirm), verwenden Media Session Manager, um diese Ereignisse zu erkennen und die Benutzeroberfläche entsprechend zu aktualisieren. Medienquellen interagieren mit Media Session Manager über die Media Session API .
Radio Spezialisierte App zur Interaktion mit der Radio-Hardware. Radio sucht nach Radiosendern, wählt schnell kürzlich identifizierte Sender aus und wechselt zwischen Radiobändern. Von Radio und Media gemeinsam genutzte UI-Komponenten ermöglichen es dem Benutzer, zwischen den beiden Erlebnissen zu wechseln.
Fahrerablenkungsmotor Android-Systemdienst, der zum Auferlegen von UX-Einschränkungen basierend auf dem Fahrzustand des Autos verwendet wird. Für die Medienquellen-Anmeldung und die UX-Einstellungen (wobei der Bildschirm direkt von den Medienquellen gesteuert wird) stellt dieser Dienst sicher, dass keine unsicheren Inhalte angezeigt werden, wenn sich das Auto im Fahrzustand befindet. OEMs können die Definition dieser Zustände und die Reaktion des Systems in diesen Situationen anpassen (z. B. durch die Anzeige eines blockierenden Bildschirm-Overlays).

Benutzerströme

Start der Medien-App

Der Prozess, der Media startet, wird unten angezeigt.

Start der Medien-App

Abbildung 2. Start der Medien-App

Medien müssen mit dem folgenden impliziten CAR_INTENT_ACTION_MEDIA_TEMPLATE gestartet werden. Diese Absicht kann als Extras folgende Informationen enthalten:

  • android.car.intent.extra.MEDIA_COMPONENT ( optional ). Zusätzliche Zeichenfolge zur Darstellung des abgeflachten Komponentennamens eines MediaBrowserService in der Medien-App, mit der die Medien eine Verbindung herstellen sollen. Wenn nicht angegeben, zeigt Media die aktuell ausgewählte Medien-App an. Diese Absicht wird von den folgenden Einstiegspunkten aus verwendet:

    • System-Benutzeroberfläche. Wird verwendet, um zum Medienerlebnis zurückzukehren oder es zum ersten Mal zu verwenden. In diesem Fall würde der obige Intent ohne Extras verwendet werden, um zu bewirken, dass Media die aktuell ausgewählte Medien-App anzeigt.

    • Startbildschirm, Assistenten und Benachrichtigungscenter. Benutzer können zu „Medien“ navigieren, um die aktuell ausgewählte Medien-App anzuzeigen. In allen Fällen wird der implizite Intent ohne Extras ausgelöst.

    • App-Launcher. Wenn Benutzer eine Medien-App aus dem App Launcher auswählen, umfasst die obige Absicht das Extra CAR_EXTRA_MEDIA_COMPONENT , das die ausgewählte Medien-App enthält. Media kennzeichnet diese als neu ausgewählte App und verbindet sich mit ihr. Einzelheiten finden Sie im folgenden Abschnitt, App Launcher-zu-Medien-Integration.

App-Launcher zur Medienintegration

Medien-Apps dürfen keine Aktivitäten bereitstellen, die mit der Kategorie android.intent.category.LAUNCHER versehen sind. Daher muss der App Launcher (oder sein Äquivalent) eine spezielle Logik implementieren, um die Integration von Medienquellen zu ermöglichen:

  • App Launcher muss das System nach Paketen durchsuchen, die MediaBrowserService.SERVICE_INTERFACE implementieren. Für diese Pakete ruft App Launcher das Dienstsymbol ab, das dem ähnelt, das zum Abrufen anderer Aktivitäten verwendet wird.

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

    Zum jetzigen Zeitpunkt kann keine Medienquellen-App eine Launcher-Aktivität bereitstellen.

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

Anmeldeablauf und Konfigurationsoptionen

Medien-Apps können eine fahrzeugoptimierte Einstellungsaktivität umfassen. Eine solche Aktivität kann verwendet werden, um Benutzerflüsse zu implementieren, die nicht von den Android Media APIs abgedeckt werden, zum Beispiel:

  • Anmelden
  • Abmelden
  • Kontowechsel
  • Anzeige, bei der der Benutzer aktuell angemeldet ist (falls vorhanden)
  • Dienst-Konfiguration

Sign-n-Flow

Abbildung 3. Anmeldeablauf

Diese Einstellungsaktivität wird von der Medien-App mit dem folgenden Absichtsfilter 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:

  • Überprüfen Sie, ob die aktuell ausgewählte Medien-App eine Aktivität mit dem angegebenen Absichtsfilter enthält.

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

  • Wenn Auto-UX-Einschränkungen in Kraft sind (z. B. wenn das Auto fährt), sollte dieses Angebot deaktiviert werden, da es sich bei der Einstellungsaktivität nicht um eine fahreroptimierte Benutzeroberfläche handelt.

Fehlerbehandlung und erforderliche Anmeldung

Media interagiert mit Medien-Apps über die Android Media Session API. Als Teil dieser API erhält Media ein PlaybackState Objekt, das den aktuellen Status der Medien-App kommuniziert.

Der Anmeldevorgang beginnt, wenn die Medien-App PlaybackState in STATE_ERROR ändert, einschließlich eines bestimmten Fehlercodes (siehe Details unten). In diesem Fall zeigt Media die Fehlerbeschreibung und eine Möglichkeit an, zu einer von der Media-App implementierten Anmeldeaktivität zu navigieren.

Derselbe Ablauf kann von Apps verwendet werden, um andere Fehlersituationen zu signalisieren (z. B. einen Serververbindungsfehler).

Fehlerbehandlung

Abbildung 4. Fehlerbehandlung

Im Rahmen der normalen PlaybackState Fehlerbehandlung muss Media die folgende Eingabe prüfen.

  • PlaybackState Fehlercode gleich PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED . Dies signalisiert, dass die Medien-App eine Anmeldung erfordert, um den Betrieb fortzusetzen. Es können weitere Fehlercodes empfangen werden, die auf andere Arten von Fehlersituationen hinweisen würden.

  • PlaybackState Fehlermeldung (von Medien-Apps mithilfe der PlaybackStateCompat.Builder#setErrorMessage Methode festgelegt) enthält eine für Menschen lesbare Erklärung (z. B. „Sie sind nicht angemeldet.“). Diese Meldung muss dem Benutzer angezeigt werden und für Fahrablenkung optimiert sein (DO).

  • Optional kann PlaybackState die folgenden Extras (von Medien-Apps mit der PlaybackStateCompat.Builder#setExtras -Methode festgelegt) mit den folgenden Schlüsseln enthalten.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL . Legen Sie eine Zeichenfolge fest, die die für Menschen lesbare Nachricht enthält, die auf der Schaltfläche angezeigt werden soll, die der Benutzer berührt, um den Anmeldevorgang zu starten.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT . Wird mit einem PendingIntent festgelegt, das ausgelöst wird, wenn der Benutzer auf die oben genannte Schaltfläche klickt. Dieser PendingIntent verweist auf eine benutzerdefinierte Anmeldeaktivität, die von derselben Medien-App implementiert wird.

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