Komponenty systemu i przepływy użytkowników

Poniższy diagram ilustruje komponenty współpracujące z Mediami:

Elementy systemu

Rysunek 1. Elementy systemu

Elementy na tym rysunku opisano w tabeli:

Część Opis
Ekran główny Reprezentuje inne powierzchnie w interfejsie użytkownika samochodu, które wyświetlają aktualnie odtwarzane multimedia i sterują nimi. W AOSP jest to główny ekran wyświetlany podczas uruchamiania systemu. Na tym ekranie użytkownicy mogą przeglądać szczegóły odtwarzanego elementu multimedialnego i wykonywać ograniczony zestaw standardowych i niestandardowych akcji (na przykład Odtwórz i Wstrzymaj).
Interfejs systemu Zapewnia funkcjonalność obejmującą globalne opcje nawigacji w interfejsie użytkownika, takie jak nawigacja do multimediów.
Asystenci Android zapewnia mechanizmy interakcji różnych aplikacji asystentów głosowych z systemem. Te aplikacje mogą wchodzić w interakcję ze źródłami multimediów w tle (na przykład odtwarzając utwór w wyniku polecenia głosowego) lub przechodzić do multimediów na pierwszym planie (na przykład gdy aplikacja asystenta głosowego otrzyma polecenie wyświetlenia interfejsu użytkownika konkretnego źródła mediów).
Program uruchamiający aplikacje Wszystkie aplikacje na Androida, łącznie ze źródłami multimediów, uruchamiają się w Menu z aplikacjami. Media mogą prezentować własny selektor źródła multimediów, uzupełniając lub zastępując App Launcher jako miejsce początkowe dla multimediów.
Sklep Google Play Gdy używany jest GAS, użytkownicy lokalizują i instalują nowe aplikacje na urządzeniu z Androidem. W przypadku multimediów po zainstalowaniu aplikacji użytkownicy są kierowani do multimediów w celu dokończenia procesu logowania lub rozpoczęcia interakcji z aplikacją.
Menedżer sesji medialnych Usługa systemu Android, która śledzi i kontroluje sesje multimedialne ze wszystkich źródeł multimediów. Zapewnia mechanizmy wykrywające, kiedy źródło multimediów staje się źródłem multimediów na pierwszym planie . Media i wszystkie inne aplikacje wyświetlające aktualnie odtwarzane źródło multimediów (na przykład ekran główny) korzystają z Menedżera sesji multimediów, aby wykryć te zdarzenia i odpowiednio zaktualizować interfejs użytkownika. Źródła multimediów współdziałają z Menedżerem sesji multimedialnej za pomocą interfejsu API sesji medialnej .
Radio Specjalistyczna aplikacja do interakcji ze sprzętem radiowym. Radio wyszukuje stacje radiowe, szybko wybiera ostatnio zidentyfikowane stacje i przełącza się między pasmami radiowymi. Komponenty interfejsu użytkownika współdzielone przez Radio i Media umożliwiają użytkownikowi przełączanie się między tymi dwoma doświadczeniami.
Silnik rozpraszający uwagę kierowcy Usługa systemu Android służąca do nakładania ograniczeń UX na podstawie stanu jazdy samochodu. W przypadku logowania do źródeł multimediów i ustawień UX (gdzie ekran jest sterowany bezpośrednio przez źródła multimediów), usługa ta gwarantuje, że podczas jazdy samochodem nie będą wyświetlane żadne niebezpieczne treści. Producenci OEM mogą dostosować definicję tych stanów i sposób, w jaki system reaguje w takich sytuacjach (na przykład wyświetlając nakładkę ekranu blokującego).

Przepływy użytkowników

Uruchomienie aplikacji multimedialnej

Poniżej przedstawiono proces uruchamiania programu Media.

Uruchomienie aplikacji multimedialnej

Rysunek 2. Uruchomienie aplikacji multimedialnej

Multimedia należy uruchomić przy użyciu następującego domyślnego CAR_INTENT_ACTION_MEDIA_TEMPLATE . Ten zamiar może zawierać następujące informacje jako dodatki :

  • android.car.intent.extra.MEDIA_COMPONENT ( opcjonalnie ). Dodatkowy ciąg reprezentujący spłaszczoną nazwę komponentu MediaBrowserService w aplikacji multimedialnej, z którą ma się łączyć multimedia. Jeśli nie zostanie podany, Media wyświetli aktualnie wybraną aplikację multimedialną. Ten zamiar jest używany z następujących punktów wejścia:

    • Interfejs systemu. Służy do powrotu do multimediów lub do rozpoczęcia korzystania z nich po raz pierwszy. W takim przypadku powyższy Zamiar zostanie zastosowany bez żadnych dodatków, aby spowodować wyświetlenie przez Media aktualnie wybranej aplikacji multimedialnej.

    • Ekran główny, Asystenci i Centrum powiadomień. Użytkownicy mogą przejść do opcji Media, aby wyświetlić aktualnie wybraną aplikację multimedialną. We wszystkich przypadkach wyzwalany jest ukryty zamiar bez dodatków.

    • Program uruchamiający aplikacje. Kiedy użytkownicy wybierają aplikację multimedialną z Menu z aplikacjami, powyższy zamiar obejmuje dodatek CAR_EXTRA_MEDIA_COMPONENT , który zawiera wybraną aplikację multimedialną. Media wyznaczają tę aplikację jako nowo wybraną aplikację i łączą się z nią. Aby uzyskać szczegółowe informacje, zobacz sekcję poniżej, Integracja aplikacji App Launcher z multimediami.

Program uruchamiający aplikacje do integracji z multimediami

Aplikacje multimedialne nie mogą wykonywać żadnych działań opatrzonych adnotacją w kategorii android.intent.category.LAUNCHER . W rezultacie program uruchamiający aplikacje (lub jego odpowiednik) musi implementować specjalną logikę, aby uwzględnić integrację źródła multimediów:

  • Program uruchamiający aplikacje musi przeskanować system w poszukiwaniu pakietów implementujących MediaBrowserService.SERVICE_INTERFACE . W przypadku tych pakietów Program uruchamiający aplikacje pobiera ikonę usługi podobną do tej używanej do pobierania innych działań.

  • Następnie App Launcher łączy te pakiety z tymi, które implementują działania android.intent.category.LAUNCHER . Jeśli aplikacja udostępnia implementację MediaBrowserService i działanie programu uruchamiającego, usługa ma pierwszeństwo.

    W chwili pisania tego tekstu żadna aplikacja źródłowa multimediów nie może zapewniać działania programu uruchamiającego.

  • Przykład tej logiki można znaleźć w kodzie AOSP pod AppLauncherUtils#getAllLauncherApps() .

Opcje przepływu logowania i konfiguracji

Aplikacje multimedialne mogą zawierać działanie Ustawienia zoptymalizowane pod kątem pojazdu. Takie działanie można wykorzystać do zaimplementowania przepływów użytkowników, których nie obsługują interfejsy API Android Media, na przykład:

  • Zalogować się
  • Wyloguj się
  • Zmiana konta
  • Wyświetlacz, na którym użytkownik jest aktualnie zalogowany (jeśli istnieje)
  • Konfiguracja usługi

Przepływ logowania

Rysunek 3. Przebieg logowania

Ta aktywność ustawień jest deklarowana przez aplikację multimedialną z następującym filtrem intencji:

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

Media muszą realizować następującą logikę:

  • Sprawdź, czy aktualnie wybrana aplikacja multimedialna zawiera działanie z danym filtrem intencji.

  • Jeśli tak, zezwól użytkownikowi na przejście do działania.

  • Jeśli obowiązują ograniczenia UX samochodu (na przykład samochód jest w ruchu), tę afordancję należy wyłączyć, ponieważ działanie Ustawienia nie jest interfejsem użytkownika zoptymalizowanym pod kątem kierowcy.

Obsługa błędów i wymagane logowanie

Media współdziałają z aplikacjami multimedialnymi za pośrednictwem interfejsu API sesji Android Media Session. W ramach tego interfejsu API Media otrzymuje obiekt PlaybackState , który informuje o bieżącym stanie aplikacji multimedialnej.

Proces logowania rozpoczyna się, gdy aplikacja multimedialna zmieni PlaybackState na STATE_ERROR , łącznie z określonym kodem błędu (szczegóły poniżej). Gdy tak się stanie, Media wyświetla opis błędu i możliwość przejścia do działania logowania zaimplementowanego przez aplikację multimedialną.

Aplikacje mogą używać tego samego przepływu do sygnalizowania innych sytuacji błędów (na przykład błędu połączenia z serwerem).

Obsługa błędów

Rysunek 4. Obsługa błędów

W ramach normalnej obsługi błędów PlaybackState nośnik musi sprawdzić następujące dane wejściowe.

  • Kod błędu PlaybackState równy PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED . Oznacza to, że aplikacja multimedialna wymaga zalogowania się, aby kontynuować działanie. Mogą zostać odebrane inne kody błędów, które wskazywałyby na inne typy błędów.

  • Komunikat o błędzie PlaybackState (ustawiany przez aplikacje multimedialne przy użyciu metody PlaybackStateCompat.Builder#setErrorMessage ) zawiera wyjaśnienie czytelne dla człowieka (na przykład „Nie jesteś zalogowany”). Ten komunikat musi być wyświetlany użytkownikowi i musi być zoptymalizowany pod kątem rozpraszania uwagi (DO).

  • Opcjonalnie PlaybackState może zawierać następujące dodatki (ustawione przez aplikacje multimedialne za pomocą metody PlaybackStateCompat.Builder#setExtras ) z następującymi kluczami.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL . Ustaw na ciąg zawierający komunikat czytelny dla człowieka, który będzie wyświetlany na przycisku dotkniętym przez użytkownika w celu rozpoczęcia procesu logowania.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT . Ustaw z PendingIntent , który ma być wyzwalany, gdy użytkownik kliknie wyżej wymieniony przycisk. Ten PendingIntent wskazuje na niestandardowe działanie logowania zaimplementowane przez tę samą aplikację multimedialną.

  • Stan PlaybackState jest równy STATE_ERROR . Oznacza to, że do czasu zakończenia logowania nie jest możliwa żadna inna operacja.