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 | 
    
      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 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 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ę.
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