Wprowadzenie do Jetpack Media3

Jetpack Media3 to nowe miejsce na biblioteki multimediów, które umożliwiają aplikacjom na Androida wyświetlanie bogatych treści audio i wizualnych. Media3 oferuje prostą architekturę z zaawansowanymi możliwościami dostosowywania, niezawodnością i optymalizacjami opartymi na możliwościach urządzenia, co pozwala uniknąć złożoności związanej z fragmentacją.

Ten dokument zawiera wprowadzenie do kluczowych interfejsów API służących do implementowania przypadków użycia związanych z odtwarzaniem i edytowaniem za pomocą Media3.

Komponenty odtwarzania

Media3 oferuje kilka kluczowych komponentów do odtwarzania. Klasy, które składają się na te komponenty, będą Ci znane, jeśli masz już doświadczenie z poprzednimi bibliotekami multimediów na Androida.

Na diagramie poniżej pokazano, jak te komponenty współdziałają w typowej aplikacji.

Różne komponenty aplikacji do multimediów, która korzysta z Media3, łączą się ze sobą na kilka prostych sposobów dzięki udostępnianiu interfejsów i klas.
Ilustracja 1. Komponenty aplikacji do multimediów

Odtwarzacz multimediów

Odtwarzacz multimedialny to komponent aplikacji, który umożliwia odtwarzanie plików multimedialnych. W Media3 znajdziesz:

Zajęcia Opis Uwaga dotycząca implementacji
Player Player to interfejs, który definiuje tradycyjne funkcje wysokiego poziomu odtwarzacza multimediów, takie jak odtwarzanie, wstrzymywanie i przewijanie. W Media3 interfejs Player to wspólny interfejs API implementowany lub używany przez kilka komponentów, takich jak MediaSession i MediaController.
ExoPlayer ExoPlayer to domyślna implementacja interfejsu Player w Media3.

Więcej informacji o Media3 ExoPlayer

sesja multimedialna,

Sesja multimedialna zapewnia uniwersalny sposób interakcji z odtwarzaczem multimedialnym. Dzięki temu aplikacja może przekazywać informacje o odtwarzaniu multimediów źródłom zewnętrznym i otrzymywać od nich żądania dotyczące elementów sterujących odtwarzaniem. W Media3 znajdziesz:

Zajęcia Opis Uwaga dotycząca implementacji
MediaSession Sesje multimedialne umożliwiają aplikacji interakcję z odtwarzaczem audio lub wideo. Przekazują informacje o odtwarzaniu multimediów źródłom zewnętrznym i otrzymują polecenia odtwarzania ze źródeł zewnętrznych. W Media3 MediaSession potrzebuje Player, aby wykonywać polecenia i uzyskiwać bieżący stan.
MediaSessionService MediaSessionService przechowuje sesję multimedialną i powiązany z nią odtwarzacz w usłudze oddzielonej od głównego elementu Activity aplikacji, aby ułatwić odtwarzanie w tle.
MediaController Klasa MediaController jest zwykle używana do wysyłania poleceń spoza aplikacji, na przykład z innych aplikacji lub samego systemu. Polecenia są wysyłane do powiązanego elementu Player powiązanego elementu MediaSession. Klasa MediaController implementuje interfejs Player, ale podczas wywoływania metody MediaController wysyła polecenie do połączonego urządzenia MediaSession. Aplikacje klienckie, takie jak Asystent Google, mogą używać MediaController do sterowania odtwarzaniem w połączonej sesji.
MediaLibraryService MediaLibraryService jest podobny do MediaSessionService, ale zawiera dodatkowe interfejsy API, dzięki którym możesz udostępniać bibliotekę treści aplikacjom klienckim.
MediaBrowser Klasa MediaBrowser umożliwia użytkownikowi poruszanie się po bibliotece treści aplikacji do multimediów i wybieranie elementów do odtworzenia. Klasa MediaBrowser implementuje interfejsy MediaController i Player. Podobnie jak w przypadku MediaController, aplikacje klienckie, takie jak Android Auto, zwykle implementują MediaBrowser.

Więcej informacji o Media3 MediaSession

Komponenty interfejsu

Media3 udostępnia domyślne komponenty interfejsu do wyświetlania filmów i sterowania odtwarzaniem.

Zajęcia Opis Uwaga dotycząca implementacji
PlayerView Domyślny element View do wyświetlania filmu i elementów sterujących odtwarzaniem. Łączy się z ExoPlayer, MediaController lub dowolnym innym niestandardowym Player.
PlayerSurface Element kompozycyjny reprezentujący dedykowany rysunek Surface do wyświetlania filmu. Łączy się z dowolnym urządzeniem Player, ale nie zawiera elementów sterujących odtwarzaniem. Służy tylko do renderowania klatek i można zmieniać jego rozmiar zgodnie z różnymi typami ContentScale. Ten i wiele innych komponentów kompozycyjnych znajdziesz w narzędziach interfejsu Compose.

Więcej informacji o interfejsie Media3

Edytowanie komponentów

Media3 zawiera interfejsy Transformer API do edycji multimediów, w tym:

  • przetwarzanie dźwięku i obrazu, np. dodawanie filtrów i efektów;
  • obsługę specjalnych formatów, takich jak filmy HDR i filmy w zwolnionym tempie;
  • kompozycja, np. łączenie wielu plików wejściowych;
  • eksportowanie ostatecznych danych wyjściowych do pliku.
Zajęcia Opis Uwaga dotycząca implementacji
Transformer Użyj klasy Transformer, aby uruchamiać i zatrzymywać przekształcenia oraz sprawdzać aktualizacje postępu uruchomionego przekształcenia.
Effects Obiekt Effects to zbiór efektów audio i wideo, które można zastosować do elementu multimedialnego. Zanim rozpoczniesz proces eksportowania, możesz użyć ExoPlayer, aby wyświetlić podgląd efektów dodanych do elementu multimedialnego.
EditedMediaItem EditedMediaItem reprezentuje element multimedialny do przetworzenia i zmiany, które należy w nim wprowadzić.

Więcej informacji o Media3 Transformer

Film z wprowadzeniem

Obejrzyj ten film, aby poznać wprowadzenie do Media3 od inżynierów, którzy stworzyli tę bibliotekę: