Komponenty systemu i przepływy danych

Komponenty, które wchodzą w interakcję z multimediami, zostały opisane w tabeli:

Komponent Opis
Ekran główny Reprezentuje inne obszary interfejsu samochodu, które wyświetlają i kontrolują obecnie odtwarzane multimedia. W AOSP jest to główny ekran wyświetlany po uruchomieniu systemu. Na tym ekranie użytkownicy mogą wyświetlać szczegóły odtwarzanego elementu multimedialnego i wykonywać ograniczony zestaw standardowych i niestandardowych działań (np. odtwarzanie i wstrzymywanie).
Interfejs systemu Zapewnia funkcje, które obejmują globalne opcje nawigacji w interfejsie, np. przejście do sekcji Media.
Asystenci Android udostępnia mechanizmy, które umożliwiają różnym aplikacjom asystenta głosowego interakcję z systemem. Te aplikacje mogą wchodzić w interakcje ze źródłami multimediów w tle (np. odtwarzać utwór w wyniku polecenia głosowego) lub przechodzić do multimediów na pierwszym planie (np. gdy aplikacja asystenta głosowego otrzyma polecenie wyświetlenia interfejsu konkretnego źródła multimediów).
Menu z aplikacjami Wszystkie aplikacje na Androida, w tym źródła multimediów, uruchamiają się w Menu z aplikacjami. Aplikacja do multimediów może wyświetlać własny selektor źródła multimediów, który uzupełnia lub zastępuje selektor aplikacji jako miejsce rozpoczęcia odtwarzania multimediów.
Sklep Google Play Gdy używane są usługi Google Play, to tutaj użytkownicy znajdują i instalują nowe aplikacje na urządzeniu z Androidem. W przypadku mediów po zainstalowaniu aplikacji użytkownicy są kierowani do sekcji Media, aby dokończyć proces logowania lub rozpocząć korzystanie z aplikacji.
Menedżer sesji multimedialnych Usługa systemowa Androida, która śledzi i kontroluje sesje multimedialne ze wszystkich źródeł multimediów. Zapewnia mechanizmy wykrywania, kiedy źródło multimediów staje się źródłem multimediów na pierwszym planie. Aplikacje multimedialne i wszystkie inne aplikacje wyświetlające aktualnie odtwarzane źródło multimediów (np. ekran główny) używają Menedżera sesji multimedialnych do wykrywania tych zdarzeń i odpowiedniego aktualizowania interfejsu. Źródła multimediów wchodzą w interakcje z menedżerem sesji multimedialnej za pomocą interfejsu Media Session API.
Radio Specjalna aplikacja do obsługi sprzętu radiowego. Radio wyszukuje stacje radiowe, szybko wybierając ostatnio zidentyfikowane stacje i przełączając się między pasmami radiowymi. Komponenty interfejsu udostępniane zarówno przez radio, jak i multimedia, umożliwiają użytkownikowi przełączanie się między tymi dwoma funkcjami.
Mechanizm rozpraszania uwagi kierowcy Usługa systemowa Androida używana do nakładania ograniczeń UX na podstawie stanu jazdy samochodu. W przypadku interfejsu logowania i ustawień źródeł multimediów (gdzie ekran jest sterowany bezpośrednio przez źródła multimediów) ta usługa zapewnia, że gdy samochód jest w ruchu, nie są wyświetlane żadne niebezpieczne treści. Producenci OEM mogą dostosowywać definicje tych stanów i sposób, w jaki system reaguje w tych sytuacjach (np. wyświetlając nakładkę blokującą ekran).

Wzorce przeglądania

Uruchamianie aplikacji do multimediów

Media muszą być uruchamiane za pomocą niejawnego CAR_INTENT_ACTION_MEDIA_TEMPLATE. Ten zamiar może zawierać te dodatki:

  • android.car.intent.extra.MEDIA_COMPONENT (opcjonalnie). Dodatkowy ciąg znaków reprezentujący spłaszczoną nazwę komponentu MediaBrowserService w aplikacji multimedialnej, z którą ma się połączyć Media. Jeśli nie podasz nazwy aplikacji, Media wyświetli obecnie wybraną aplikację multimedialną. Ten zamiar jest używany w tych punktach 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 użyty bez żadnych dodatków, aby spowodować wyświetlenie przez Media obecnie wybranej aplikacji multimedialnej.

    • Ekran główny, asystenci i centrum powiadomień. Użytkownicy mogą przejść do sekcji Multimedia, aby wyświetlić aktualnie wybraną aplikację multimedialną. We wszystkich przypadkach wywoływane jest niejawne działanie Intent bez dodatków.

    • Menu z aplikacjami Gdy użytkownicy wybiorą aplikację do multimediów w menu z aplikacjami, powyższy zamiar będzie zawierać dodatkowy element CAR_EXTRA_MEDIA_COMPONENT, który zawiera wybraną aplikację do multimediów. System multimediów oznaczy ją jako nowo wybraną aplikację i się z nią połączy. Szczegółowe informacje znajdziesz w sekcji poniżej Integracja Launchera aplikacji z multimediami.

Menu z aplikacjami do integracji multimediów

Aplikacje do multimediów nie mogą udostępniać żadnych działań oznaczonych kategorią android.intent.category.LAUNCHER. W związku z tym selektor aplikacji (lub jego odpowiednik) musi implementować specjalną logikę, aby obsługiwać integrację ze źródłem multimediów:

  • Menu z aplikacjami musi skanować system w poszukiwaniu pakietów implementujących MediaBrowserService.SERVICE_INTERFACE. W przypadku tych pakietów menu z aplikacjami pobiera ikonę usługi podobną do tej, która jest używana do pobierania innych działań.

  • Menu z aplikacjami łączy te pakiety z pakietami, które implementują aktywności android.intent.category.LAUNCHER. Jeśli aplikacja udostępnia implementację MediaBrowserService i aktywność programu uruchamiającego, usługa ma pierwszeństwo.

    W momencie pisania tego artykułu żadna aplikacja źródła multimediów nie może udostępniać aktywności programu uruchamiającego.

  • Przykład tej logiki znajdziesz w kodzie AOSP w tym miejscu: AppLauncherUtils#getAllLauncherApps().

Proces logowania i opcje konfiguracji

Aplikacje do multimediów mogą zawierać aktywność Ustawienia zoptymalizowaną pod kątem pojazdu. Takie działanie może służyć do wdrażania przepływów użytkowników, których nie obsługują interfejsy Android Media API, np.:

  • Zaloguj się
  • Wyloguj się
  • Przełączanie kont
  • Wyświetlacz, na którym użytkownik jest obecnie zalogowany (jeśli dotyczy).
  • Konfiguracja usługi

Ta aktywność Ustawień jest deklarowana przez aplikację multimedialną za pomocą tego filtra 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>

Usługa musi implementować tę logikę:

  • Sprawdź, czy obecnie wybrana aplikacja do multimediów zawiera działanie z podanym filtrem intencji.

  • Jeśli tak, zezwól użytkownikowi na przejście do aktywności.

  • Jeśli obowiązują ograniczenia interfejsu samochodu (np. samochód jest w ruchu), ta funkcja powinna być wyłączona, ponieważ aktywność Ustawienia nie jest zoptymalizowanym interfejsem kierowcy.

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

Media współdziałają z aplikacjami multimedialnymi za pomocą interfejsu Android Media Session API. W ramach tego interfejsu API usługa Media otrzymuje obiekt PlaybackState, który przekazuje bieżący stan aplikacji multimedialnej.

Proces logowania rozpoczyna się, gdy aplikacja multimedialna zmieni wartość PlaybackState na STATE_ERROR, w tym określony kod błędu (szczegóły poniżej). W takiej sytuacji Media wyświetla opis błędu i element umożliwiający przejście do aktywności logowania zaimplementowanej przez aplikację multimedialną.

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

W ramach normalnej PlaybackState obsługi błędów usługa Media musi sprawdzać te dane wejściowe:

  • PlaybackState kod błędu równy PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Sygnalizuje to, że aplikacja multimedialna wymaga zalogowania, aby kontynuować działanie. Możesz otrzymać inne kody błędów, które wskazują inne rodzaje błędów.

  • Komunikat o błędzie PlaybackState (ustawiany przez aplikacje multimedialne za pomocą metody PlaybackStateCompat.Builder#setErrorMessage) zawiera czytelne dla użytkownika wyjaśnienie (np. „Nie jesteś zalogowany(-a)”). Ten komunikat musi być wyświetlany użytkownikowi i musi być zoptymalizowany pod kątem rozpraszania uwagi kierowcy.

  • Opcjonalnie PlaybackState może zawierać te dodatkowe informacje (ustawiane przez aplikacje multimedialne za pomocą metody PlaybackStateCompat.Builder#setExtras) z tymi kluczami:

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Ustaw na ciąg tekstowy, który zawiera zrozumiały dla człowieka komunikat wyświetlany na przycisku, którego użytkownik dotyka, aby rozpocząć proces logowania.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Ustaw wartość PendingIntent, aby wywoływać zdarzenie, gdy użytkownik kliknie wspomniany wyżej przycisk. Ten PendingIntent wskazuje niestandardową aktywność logowania zaimplementowaną przez tę samą aplikację multimedialną.

  • PlaybackState region administracyjny jest równy STATE_ERROR. Oznacza to, że dopóki logowanie nie zostanie zakończone, nie można wykonać żadnej innej operacji.