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.
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ę:
Przydatne linki
- Centrum dla deweloperów multimediów
ExoPlayerdokument- Przewodnik po migracji
- AndroidX Media3 na GitHubie
- Przykładowa aplikacja sesji multimedialnej Media3
- Przykładowa aplikacja Universal Android Music Player