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.
 
  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 | Playerto interfejs, który definiuje tradycyjne funkcje wysokiego poziomu odtwarzacza multimediów, takie jak możliwość odtwarzania, wstrzymywania i przewijania. | W Media3 interfejs Playerto wspólny interfejs API zaimplementowany lub używany przez kilka komponentów, np.MediaSessioniMediaController. | 
| ExoPlayer | ExoPlayerto domyślna implementacja interfejsuPlayerw 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 MediaSessionpotrzebujePlayerdo wykonywania poleceń i uzyskiwania bieżącego stanu. | 
| MediaSessionService | MediaSessionServiceprzechowuje sesję multimedialną i powiązany z nią odtwarzacz w usłudze oddzielonej od głównegoActivityaplikacji, aby ułatwić odtwarzanie w tle. | |
| MediaController | Klasa MediaControllerjest zwykle używana do wysyłania poleceń
      z zewnątrz aplikacji, np. z innych aplikacji lub samego systemu.
      Polecenia są wysyłane do bazowegoPlayerpowiązanegoMediaSession. | Klasa MediaControllerimplementuje interfejsPlayer, ale podczas wywoływania metody klasaMediaControllerwysyła polecenie do połączonego urządzeniaMediaSession. Aplikacje klienckie, takie jak Asystent Google, mogą używaćMediaControllerdo sterowania odtwarzaniem w połączonej sesji. | 
| MediaLibraryService | MediaLibraryServicejest podobny doMediaSessionService, ale zawiera dodatkowe interfejsy API, dzięki czemu możesz udostępniać bibliotekę treści aplikacjom klienckim. | |
| MediaBrowser | Klasa MediaBrowserumożliwia użytkownikowi przeglądanie biblioteki treści aplikacji multimedialnej i wybieranie elementów do odtworzenia. | Klasa MediaBrowserimplementuje interfejsyMediaControlleriPlayer. Podobnie jak w przypadkuMediaController, 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 Viewdo wyświetlania filmu i elementów sterujących odtwarzaniem. | łączy się z ExoPlayer,MediaControllerlub dowolnym innym niestandardowymPlayer; | 
| PlayerSurface | Kompozycja reprezentująca dedykowany obszar rysowania Surfacedo 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 Effectsto 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 | EditedMediaItemreprezentuje 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ę.
Przydatne linki
- Centrum dla deweloperów mediów
- ExoPlayerDokumenty
- Przewodnik po migracji
- AndroidX Media3 w GitHubie
- Przykładowa aplikacja sesji multimedialnej Media3
- Przykładowa aplikacja Universal Android Music Player
