Wprowadzenie do Jetpack Media3

Jetpack Media3 to nowe miejsce dla bibliotek multimediów, które umożliwiają aplikacjom na Androida wyświetlanie bogatych treści audio i wideo. Media3 ma prostą architekturę, ale oferuje zaawansowane możliwości dostosowywania, niezawodność i optymalizacje oparte na możliwościach urządzenia, aby ukryć złożoność wynikającą z fragmentacji.

W tym dokumencie znajdziesz wprowadzenie do kluczowych interfejsów API, które umożliwiają wdrażanie przypadków użycia związanych z odtwarzaniem i edytowaniem w Media3.

Komponenty odtwarzania

Media3 oferuje kilka kluczowych komponentów do odtwarzania. Jeśli korzystasz z poprzednich bibliotek multimediów na Androidzie, klasy, z których składają się te komponenty, będą Ci znane.

Na diagramie poniżej pokazano, jak te komponenty łączą się w typowych aplikacjach.

Różne komponenty aplikacji multimedialnej korzystającej z Media3 łączą się ze sobą na kilka prostych sposobów dzięki wspólnym interfejsom i klasom.
Ilustracja 1. Komponenty aplikacji multimedialnej

Odtwarzacz multimediów

Odtwarzacz multimediów 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 możliwość odtwarzania, wstrzymywania i przewijania. W Media3 interfejs Player to wspólny interfejs API zaimplementowany lub używany przez kilka komponentów, np. MediaSession i MediaController.
ExoPlayer ExoPlayer to domyślna implementacja interfejsu Player w Media3.

Więcej informacji o Media3 ExoPlayer

Sesja multimedialna

Sesja multimedialna to uniwersalny sposób interakcji z odtwarzaczem multimediów. Umożliwia to aplikacji reklamowanie odtwarzania multimediów w źródłach zewnętrznych i otrzymywanie z nich żądań sterowania odtwarzaniem. W Media3 znajdziesz:

Zajęcia Opis Uwaga dotycząca implementacji
MediaSession Sesje multimedialne umożliwiają aplikacji interakcję z odtwarzaczem audio lub wideo. reklamują odtwarzanie multimediów na zewnątrz i otrzymują polecenia odtwarzania ze źródeł zewnętrznych; W Media3 MediaSession potrzebuje Player do wykonywania poleceń i uzyskiwania bieżącego stanu.
MediaSessionService MediaSessionService przechowuje sesję multimedialną i powiązany z nią odtwarzacz w usłudze oddzielonej od głównego Activity aplikacji, aby ułatwić odtwarzanie w tle.
MediaController Klasa MediaController jest zwykle używana do wysyłania poleceń z zewnątrz aplikacji, np. z innych aplikacji lub samego systemu. Polecenia są wysyłane do bazowego Player powiązanego MediaSession. Klasa MediaController implementuje interfejs Player, ale podczas wywoływania metody klasa 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 czemu możesz udostępniać bibliotekę treści aplikacjom klienckim.
MediaBrowser Klasa MediaBrowser umożliwia użytkownikowi przeglądanie biblioteki treści aplikacji multimedialnej i wybieranie elementów do odtworzenia. Klasa MediaBrowser implementuje interfejsy MediaControllerPlayer. 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 przycisk View do wyświetlania filmu i elementów sterujących odtwarzaniem. łączy się z ExoPlayer, MediaController lub dowolnym innym niestandardowym Player;
PlayerSurface Kompozycja reprezentująca dedykowany obszar rysowaniaSurface do wyświetlania wideo. Łączy się z dowolnym Player, ale nie ma elementów sterujących odtwarzaniem. Używany tylko do renderowania ramek i może być zmieniany w zależności od różnych typów 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 zastosowań związanych z edycją multimediów, w tym:

  • przetwarzanie audio i wideo, np. dodawanie filtrów i efektów;
  • obsługiwanie specjalnych formatów, takich jak filmy HDR i filmy w zwolnionym tempie;
  • kompozycja, np. łączenie wielu plików wejściowych;
  • Eksportowanie końcowego wyniku do pliku
Zajęcia Opis Uwaga dotycząca implementacji
Transformer Użyj klasy Transformer, aby rozpocząć i zatrzymać przekształcenia oraz sprawdzić postęp trwającego przekształcenia.
Effects Obiekt Effects to zbiór efektów audio i wideo, które można zastosować do elementu multimedialnego. Możesz użyć ExoPlayer, aby wyświetlić podgląd efektów dodanych do elementu multimedialnego przed rozpoczęciem procesu eksportowania.
EditedMediaItem EditedMediaItem reprezentuje element multimedialny do przetworzenia i zmiany, które mają zostać w nim wprowadzone.

Więcej informacji o Media3 Transformer

Film z wprowadzeniem

W filmie poniżej inżynierowie, którzy stworzyli Media3, przedstawiają tę bibliotekę.