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ę komponentuMediaBrowserServicew 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ęMediaBrowserServicei 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:
-
PlaybackStatekod błędu równyPlaybackStateCompat#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ą metodyPlaybackStateCompat.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
PlaybackStatemoże zawierać te dodatkowe informacje (ustawiane przez aplikacje multimedialne za pomocą metodyPlaybackStateCompat.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. TenPendingIntentwskazuje niestandardową aktywność logowania zaimplementowaną przez tę samą aplikację multimedialną.
-
-
PlaybackStateregion administracyjny jest równySTATE_ERROR. Oznacza to, że dopóki logowanie nie zostanie zakończone, nie można wykonać żadnej innej operacji.