Das folgende Diagramm veranschaulicht die Komponenten, die mit Medien interagieren:
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.
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 einesMediaBrowserService
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 eineMediaBrowserService
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
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).
Abbildung 4. Fehlerbehandlung
Im Rahmen der normalen PlaybackState
Fehlerbehandlung muss Media die folgende Eingabe prüfen.
PlaybackState
Fehlercode gleichPlaybackStateCompat#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 derPlaybackStateCompat.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 derPlaybackStateCompat.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 einemPendingIntent
festgelegt, das ausgelöst wird, wenn der Benutzer auf die oben genannte Schaltfläche klickt. DieserPendingIntent
verweist auf eine benutzerdefinierte Anmeldeaktivität, die von derselben Medien-App implementiert wird.
PlaybackState
-Status ist gleichSTATE_ERROR
. Dies signalisiert, dass kein weiterer Vorgang möglich ist, bis die Anmeldung abgeschlossen ist.