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
ExoPlayer
Dokumenty- Przewodnik po migracji
- AndroidX Media3 w GitHubie
- Przykładowa aplikacja sesji multimedialnej Media3
- Przykładowa aplikacja Universal Android Music Player