Die Komponenten, die mit Media interagieren, werden in der Tabelle beschrieben:
| Komponente | Beschreibung |
|---|---|
| Startbildschirm | Stellt andere Oberflächen in der Benutzeroberfläche des Autos dar, auf denen die aktuell wiedergegebenen Medien angezeigt und gesteuert werden. In AOSP ist dies der Hauptbildschirm, der beim Start des Systems angezeigt wird. Auf diesem Bildschirm können Nutzer Details zum wiedergegebenen Media-Element aufrufen und eine begrenzte Anzahl von Standard- und benutzerdefinierten Aktionen ausführen (z. B. „Wiedergabe“ und „Pause“). |
| System-UI | Bietet Funktionen, die globale Optionen für die Benutzeroberflächennavigation umfassen, z. B. zum Navigieren zu „Media“. |
| Assistants | Android bietet Mechanismen für die Interaktion verschiedener Sprachassistenten-Apps mit dem System. Diese Apps können im Hintergrund mit Media Sources interagieren (z. B. einen Song als Ergebnis eines Sprachbefehls abspielen) oder im Vordergrund zu Medien navigieren (z. B. wenn eine Sprachassistenten-App angewiesen wird, die Benutzeroberfläche einer bestimmten Media Source anzuzeigen). |
| App Launcher | Alle Android-Apps, einschließlich Media Sources, werden im App Launcher gestartet. Media kann eine eigene Media Source-Auswahl präsentieren, die den App Launcher als Ausgangspunkt für Media ergänzt oder ersetzt. |
| Google Play Store | Wenn GAS verwendet wird, finden und installieren Nutzer hier neue Apps auf einem Android-Gerät. Nach der Installation von Apps werden Nutzer bei Media aufgefordert, sich anzumelden oder mit der App zu interagieren. |
| Media Session Manager | Android-Systemdienst, der Mediensitzungen von allen Medienquellen verfolgt und steuert. Sie bietet Mechanismen, um zu erkennen, wann eine Media Source zur Vordergrund-Media Source wird. Medien und alle anderen Apps, die die aktuell wiedergegebene Medienquelle anzeigen (z. B. der Startbildschirm), verwenden Media Session Manager, um diese Ereignisse zu erkennen und die Benutzeroberfläche entsprechend zu aktualisieren. Media-Quellen interagieren über die Media Session API mit dem Media Session Manager. |
| Radio | Spezielle App für die Interaktion mit der Funkhardware. Mit dem Radio können Sie nach Radiosendern suchen, schnell kürzlich identifizierte Sender auswählen und zwischen Radiobändern wechseln. Über UI-Komponenten, die sowohl von Radio als auch von Media verwendet werden, kann der Nutzer zwischen den beiden Funktionen wechseln. |
| Driver Distraction Engine | Android-Systemdienst, der UX-Einschränkungen basierend auf dem Fahrzustand des Autos durchsetzt. Bei der UX für die Anmeldung und Einstellungen von Media-Quellen (bei der der Bildschirm direkt von den Media-Quellen gesteuert wird) sorgt dieser Dienst dafür, dass keine unsicheren Inhalte angezeigt werden, wenn das Auto fährt. OEMs können die Definition dieser Status und die Reaktion des Systems in diesen Situationen anpassen, z. B. durch die Anzeige eines blockierenden Bildschirm-Overlays. |
User-Flows
Starten von Medien-Apps
Media müssen mit dem folgenden impliziten
CAR_INTENT_ACTION_MEDIA_TEMPLATE gestartet werden.
Dieses Intent kann die folgenden Informationen als Extras enthalten:
-
android.car.intent.extra.MEDIA_COMPONENT(optional). String-Extra, das den vereinfachten Komponentennamen einesMediaBrowserServicein der Media-App darstellt, mit der die Media-App verbunden werden soll. Wenn nichts angegeben ist, wird in Media die aktuell ausgewählte Media-App angezeigt. Dieser Intent wird über die folgenden Einstiegspunkte verwendet:-
System-UI. Damit können Sie zur Medienoberfläche zurückkehren oder sie zum ersten Mal verwenden. In diesem Fall wird der oben genannte Intent ohne Extras verwendet, damit in Media die aktuell ausgewählte Media-App angezeigt wird.
-
Startbildschirm, Assistenten und Mitteilungszentrale. Nutzer können zu „Media“ navigieren, um die aktuell ausgewählte Media-App aufzurufen. In allen Fällen wird der implizite Intent ohne Extras ausgelöst.
-
App Launcher Wenn Nutzer eine Media-App über den App Launcher auswählen, enthält der oben genannte Intent das Extra
CAR_EXTRA_MEDIA_COMPONENT, das die ausgewählte Media-App enthält. Media kennzeichnet diese als die neu ausgewählte App und stellt eine Verbindung zu ihr her. Weitere Informationen finden Sie im Abschnitt „App Launcher to Media integration“ unten.
-
App Launcher für die Medienintegration
Medien-Apps dürfen keine Aktivitäten mit der Kategorie android.intent.category.LAUNCHER bereitstellen. Daher muss der App Launcher (oder das Äquivalent) eine spezielle Logik für die Integration von Media-Quellen implementieren:
-
Der App Launcher muss das System nach Paketen durchsuchen, die
MediaBrowserService.SERVICE_INTERFACEimplementieren. Für diese Pakete ruft App Launcher das Dienstsymbol auf ähnliche Weise ab wie für andere Aktivitäten. -
Der 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.Derzeit kann keine Media-Source-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 Einstellungsaktivität enthalten. Eine solche Aktivität kann verwendet werden, um Nutzerflows zu implementieren, die nicht von den Android Media APIs abgedeckt werden, z. B.:
- Anmeldung
- Abmeldung
- Wechsel zwischen Konten
- Anzeige, auf der der Nutzer derzeit angemeldet ist (falls zutreffend)
- Dienstkonfiguration
Diese Einstellungen werden von der Media-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 Media-App eine Aktivität mit dem angegebenen Intent-Filter enthält.
-
Wenn ja, ermöglichen Sie dem Nutzer, zur Aktivität zu navigieren.
-
Wenn Einschränkungen für die Car UX gelten (z. B. wenn das Auto fährt), sollte diese Funktion deaktiviert werden, da die Aktivität „Einstellungen“ keine für den Fahrer optimierte Benutzeroberfläche ist.
Fehlerbehandlung und erforderliche Anmeldung
Media interagiert über die Android Media Session API mit Media-Apps. Im Rahmen dieser API erhält Media ein PlaybackState-Objekt, das den aktuellen Status der Media-App angibt.
Der Anmeldevorgang beginnt, wenn die Media-App PlaybackState in STATE_ERROR ändert und einen bestimmten Fehlercode enthält (siehe unten). In diesem Fall zeigt Media die Fehlerbeschreibung und eine Möglichkeit an, zu einer von der Media-App implementierten Anmeldeaktivität zu wechseln.
Dieser Ablauf kann von Apps verwendet werden, um andere Fehlersituationen zu signalisieren, z. B. einen Fehler bei der Serververbindung.
Im Rahmen der normalen PlaybackState-Fehlerbehandlung muss Media die folgenden Eingaben prüfen.
-
PlaybackState-Fehlercode gleichPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Dies signalisiert, dass für die Nutzung der Media-App eine Anmeldung erforderlich ist. Es können auch andere Fehlercodes empfangen werden, die auf andere Arten von Fehlersituationen hinweisen. -
Die
PlaybackState-Fehlermeldung (die von Media-Apps mit der MethodePlaybackStateCompat.Builder#setErrorMessagefestgelegt wird) enthält eine menschenlesbare Erklärung (z. B. „Sie sind nicht angemeldet.“). Diese Meldung muss dem Nutzer angezeigt werden und muss für die Ablenkung beim Fahren optimiert sein. -
Optional kann
PlaybackStatedie folgenden Extras enthalten (die von Media-Apps mit der MethodePlaybackStateCompat.Builder#setExtrasfestgelegt werden) mit den folgenden Schlüsseln.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL: Auf einen String setzen, der die für Menschen lesbare Nachricht enthält, die auf der Schaltfläche angezeigt werden soll, die der Nutzer berührt, um den Anmeldevorgang zu starten. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT: Wird mit einemPendingIntentfestgelegt, das ausgelöst werden soll, wenn der Nutzer auf die oben genannte Schaltfläche klickt.PendingIntentverweist auf eine benutzerdefinierte Anmeldeaktivität, die von derselben Media-App implementiert wurde.
-
-
Der Status
PlaybackStateentsprichtSTATE_ERROR. Das bedeutet, dass keine weiteren Vorgänge möglich sind, bis die Anmeldung abgeschlossen ist.