Media2

udostępniać treści multimedialne i elementy sterujące innym aplikacjom;
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
10 stycznia 2024 r. 1.3.0 - - -

Deklarowanie zależności

Aby dodać zależność od Media2, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven firmy Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Groovy

dependencies {
    def media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation "androidx.media2:media2-session:$media2_version"
    // optional - UI widgets for VideoView and MediaControlView
    implementation "androidx.media2:media2-widget:$media2_version"
    // optional - Implementation of a SessionPlayer
    implementation "androidx.media2:media2-player:$media2_version"
}

Kotlin

dependencies {
    val media2_version = "1.3.0"

    // Interacting with MediaSessions
    implementation("androidx.media2:media2-session:$media2_version")
    // optional - UI widgets for VideoView and MediaControlView
    implementation("androidx.media2:media2-widget:$media2_version")
    // optional - Implementation of a SessionPlayer
    implementation("androidx.media2:media2-player:$media2_version")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.3

Wersja 1.3.0

10 stycznia 2024 r.

androidx.media2:media2-*:1.3.0 został zwolniony. Wersja 1.3.0 zawiera te commity.

Ważne zmiany od wersji 1.2.0

  • Pakiet androidx.media2 został całkowicie wycofany. Zamiast niej użyj pakietu androidx.media3.

Wersja 1.3.0-rc01

13 grudnia 2023 r.

androidx.media2:media2-*:1.3.0-rc01 jest wydana bez zmian w wersji Media2 1.3.0-beta01. Wersja 1.3.0-rc01 zawiera te commity.

Wersja 1.3.0-beta01

29 listopada 2023 r.

androidx.media2:media2-*:1.3.0-beta01 jest publikowana bez zmian w stosunku do Media2 1.3.0-alpha01. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Wersja 1.3.0-alpha01

15 listopada 2023 r.

androidx.media2:media2-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Właściwość androidx.media2 została całkowicie wycofana. Zamiast tego użyj androidx.media3. (I53164)

Wersja 1.2.1

Wersja 1.2.1

9 lutego 2022 r.

androidx.media2:media2-*:1.2.1 został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono sprawdzanie niestandardowych obiektów Parcelables podczas kierowania na interfejs API 33.

Wersja 1.2.0

Wersja 1.2.0

15 września 2021 r.

androidx.media2:media2-*:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Obsługa interoperacyjności z multimediami AndroidX (przygotuj|odtwórz) z(MediaId|Uri|Wyszukiwanie)
  • Dodano MEDIA_URI_PATH_SET_MEDIA_URI i MEDIA_URI_QUERY_URI w MediaConstants

Wersja 1.2.0-rc01

1 września 2021 roku

androidx.media2:media2-*:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem z ANR podczas odrzucania powiadomienia o multimediach (Ifdcc2, b/148011394)

Wersja 1.2.0-beta01

30 czerwca 2021 r.

androidx.media2:media2-*:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.

Nowe funkcje

  • Obsługa interoperacyjności z multimediami AndroidX (przygotuj|odtwórz) z(MediaId|Uri|Wyszukiwanie)

Zmiany w interfejsie API

  • Dodano MEDIA_URI_PATH_SET_MEDIA_URI i MEDIA_URI_QUERY_URI w MediaConstants

Wersja 1.2.0-alpha01

21 kwietnia 2021 r.

androidx.media2:media2-*:1.2.0-alpha01 został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

Poprawki błędów

  • Rozwiązaliśmy problem z blokadą spowodowaną niepotrzebnymi blokami synchronizacji.
  • Resetowanie odtwarzacza, gdy nie ma żadnych odtwarzalnych elementów
  • Zezwalanie onCurrentMediaItemChanged na przyjmowanie pustego elementu multimedialnego
  • Aktualizowanie powiadomienia po zmianie bieżącego elementu multimedialnego
  • Rozwiązanie problemu z interoperacyjnością z kontrolerem zgodnym od razu po utworzeniu sesji

Wersja 1.1.3

Wersja 1.1.3

21 kwietnia 2021 r.

androidx.media2:media2-*:1.1.3 został zwolniony. Wersja 1.1.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z blokadą spowodowaną niepotrzebnymi blokami synchronizacji.

Wersja 1.1.2

Wersja 1.1.2

27 stycznia 2021 r.

androidx.media2:media2-*:1.1.2 został zwolniony. Wersja 1.1.2 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.1.1

Wersja 1.1.1

16 grudnia 2020 roku

androidx.media2:media2-*:1.1.1 został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizuj powiadomienie o multimediach, gdy zmieni się bieżący element multimediów.

Wersja 1.1.0

Wersja 1.1.0

2 grudnia 2020 r.

androidx.media2:media2-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

Najważniejsze zmiany od wersji 1.0.0

  • Dodano więcej interfejsów API do obsługi ścieżek multimediów
  • Lepsza obsługa interoperacyjności z biblioteką multimediów AndroidX
    • Dodano: MediaSession#setMediaUri
    • Ujawniony MediaSessionCompat.Token przez MediaSession#getSessionCompatToken()

Wersja 1.1.0-rc01

28 października 2020 r.

androidx.media2:media2-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

  • Rozwiązaliśmy problem, w którym MediaController wywoływał funkcje zwrotne podczas blokowania, co mogło prowadzić do potencjalnych blokad (I76c56).
  • Rozwiązaliśmy problem, który powodował awarię MediaSessionImplBase#isClosed() podczas wywoływania metody getCurrentControllerInfo() w wypuszczonym obiekcie MediaSessionCompat. (aosp/1423291]
  • Rozwiązaliśmy problem, który powodował, że media2 MediaSession nie ustawiał identyfikatora aktywnego elementu kolejki na PlaybackStateCompat (aosp/1421652).
  • Dodano flagę BIND_INCLUDE_CAPABILITIES podczas łączenia z usługą, co umożliwia bezgłowym aplikacjom multimedialnym dostęp do lokalizacji, jeśli mają odpowiednie uprawnienia. Jest to szczególnie przydatne w przypadku aplikacji na Androida Auto. (aosp/1440731)

Wersja 1.1.0-beta01

16 września 2020 roku

androidx.media2:media2-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Poprawki błędów

  • Zresetuj bieżącą pozycję po zmianie elementu multimedialnego
  • Wysyłanie metadanych i stanu buforowania po połączeniu
  • Naprawiono błąd powodujący awarię podczas wysyłania dużych danych między sesją a kontrolerem.
  • Dodaj <queries> do pliku manifestu dla multimediów i media2 na Androida 11
  • Napraw NPE w przypadku MediaController.getPlaylist()
  • Wyłącz pasek postępu MediaControlView, gdy polecenie przesunięcia nie jest dozwolone
  • Powiadom PlaybackStateCompat, gdy zmieni się bieżący element multimedialny sesji
  • Napraw podział na paczki w przypadku SessionPlayer.TrackInfo

Wersja 1.1.0-alpha01

24 czerwca 2020 r.

androidx.media2:media2-*:1.1.0-alpha01 został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.

Poprawki błędów

  • Rozwiązano problem z czasem podczas aktualizowania metadanych (I45567, b/143999611)
  • SessionResult zachowa MediaItem z PlayerResult (I927b0, b/154885520)
  • Usunęliśmy błąd, który powodował, że MediaController#setVolumeTo() mogła zmienić głośność niewłaściwego strumienia. (I76870, b/151204736)

Wersja 1.0.3

Wersja 1.0.3

19 lutego 2020 r.

androidx.media2:media2-*:1.0.3 został zwolniony. Wersja 1.0.3 pakietu media2-{common,player,session} zawiera te zatwierdzenia, a wersja 1.0.3 pakietu media2-widget zawiera te zatwierdzenia

Poprawki błędów

  • Usunięto NullPointerException podczas tworzenia MediaController z nullowym wywołaniem zwrotnym.
  • Rozwiązanie problemu polegającego na tym, że funkcja onPlaylistChanged() nie była wywoływana po wywołaniu funkcji MediaPlayer.setMediaItem.

Wersja 1.0.2

Wersja 1.0.2

5 lutego 2020 r.

androidx.media2:media2-*:1.0.2 został zwolniony. Wersja 1.0.2 pakietu media2-{common,player,session} zawiera te zatwierdzenia, a wersja 1.0.2 pakietu media2-widget zawiera te zatwierdzenia

Poprawki błędów

  • Naprawiono błąd IndexOutOfBoundsException w pliku MediaPlayer#getSelectedTrack(). (aosp/987003)
  • Ulepszone działanie w przypadku, gdy ExoPlayer wywołuje getDuration(), a element multimediów nie istnieje (aosp/987484)
  • Usunęliśmy błąd, który powodował, że ExoPlayer nie wywoływał błędu IllegalStateException, gdy wywoływana była metoda getDuration() w stanie IDLE (aosp/987246).
  • Nie zezwalaj na niestandardowe obiekty Parcelables w przypadku media2 (aosp/1091056)
  • Naprawiono błąd powodujący zawieszanie się funkcji close() (aosp/1096455)
  • MediaBrowser: ulepszono obsługę błędów w funkcji subscribe() w funkcji MediaBrowserService (aosp/1158057).
  • Usunięto problem z zawieszaniem się MediaController w ramach Framework MediaSession(aosp/1177663).
  • Nie informuj o informacjach dotyczących sesji za pomocą wywołań zwrotnych po nawiązaniu połączenia (aosp/1195030, b/142925848).
  • Rozwiązaliśmy problem, który powodował nieoczekiwane wysyłanie więcej niż raz wyniku sesji przez MediaController (aosp/1198634).
  • Rozwiązaliśmy problem, który powodował, że MediaController mógł wysyłać do MediaSession niedozwolone polecenia. Teraz MediaSession wysyła RESULT_ERROR_PERMISSION_DENIED (aosp/1204183).
  • Rozwiązano problem z MediaControllerView#setPlayer (aosp/987004)

Wersja 1.0.1

Wersja 1.0.1

9 października 2019 r.

androidx.media2:media2-*:1.0.1 został zwolniony. Wersja 1.0.1 pakietu androidx.media2:media2-{player, session}:1.0.1 zawiera te kompozycje, a wersja 1.0.1 pakietu androidx.media2:media2-widget:1.0.1 zawiera te kompozycje.

Poprawki błędów

  • Usunięto błąd RuntimeException, który występował podczas wysyłania podklasy MediaItem w ramach procesu (aosp/1098971)
  • Rozwiązano problem, który powodował, że MediaPlayer wywołuje funkcję onCurrentMediaItemChanged() tylko raz podczas odtwarzania playlisty.
  • Rozwiązano problem, który powodował, że MediaPlayer mógł odtwarzać playlistę z większą liczbą niż 2 elementy (aosp/1108440)
  • Rozwiązaliśmy problem polegający na tym, że odtwarzacz nadal odtwarzał film w SurfaceView, mimo że był niewidoczny.
  • Rozwiązanie problemu z odtwarzaniem VideoView, który występuje, gdy wywołanie setViewType następuje przed setPlayer

Wersja 1.0.0

5 września 2019 r.

androidx.media2:media2-*:1.0.0 został zwolniony. Oto kompilacje uwzględnione w media2-{player, session}:1.0.0, a oto kompilacje uwzględnione w media2-widget:1.0.0.

Najważniejsze funkcje Media2 1.0.0

Media2 to nowa generacja tych interfejsów Media API: MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoViewMediaControlView.

  • media2.player.MediaPlayer
    • Interfejsy API są w większości dopasowywane do android.media.MediaPlayer, a podstawowym mechanizmem jest ExoPlayer
    • Wbudowana funkcja skupiania się na dźwięku i wyciszanie szumów
    • Implementuje SessionPlayer
  • media2.session.MediaSession
    • Zapewnia szczegółową kontrolę uprawnień
    • Obsługuje układy niestandardowe
    • Łatwe w użyciu w przypadku SessionPlayer, np. androidx.media2.player.MediaPlayer
    • Interoperacyjność z MediaControllerCompat
  • media2.session.MediaSessionService
    • Prosta wersja aplikacji MediaLibraryService
    • zapewnia zarządzanie cyklem życia usługi w przypadku odtwarzania w tle;
    • Interoperacyjność z MediaControllerCompat i MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Obsługa lepszej strony z przewijaniem dostępnych podczas nawigacji po elementach multimediów lub wyników wyszukiwania zawierających wiele elementów
    • Interoperacyjność z MediaControllerCompat i MediaBrowserServiceCompat
  • media2.session.MediaController
    • Może łączyć się z usługami MediaSession, MediaSessionServiceMediaLibraryService
    • Interoperacyjność z MediaSessionCompat i MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Dziedziczy MediaController
    • Może łączyć się z urządzeniami MediaSession, MediaSessionServiceMediaLibraryService
    • Interoperacyjność z MediaSessionCompat i MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Zawiera wszystkie funkcje android.widget.VideoView
    • Umożliwia przełączanie się między TextureViewSurfaceView
    • Może współpracować z MediaSession
  • media2.widget.MediaControlView
    • lepszy wygląd i sposób działania,
    • Zawiera wszystkie funkcje android.widget.MediaController
    • Umożliwia wybór ścieżki z napisami, wybór szybkości odtwarzania i tryb pełnoekranowy.

Wersja 1.0.0-rc02

22 sierpnia 2019 r.

Wersja androidx.media2:media2-*:1.0.0-rc02 została wydana. Zmiany w niej znajdziesz tutaj. Ta wersja zawiera androidx.media2:media2-widget:1.0.0-rc02, a informacje o wprowadzonych w niej zmianach znajdziesz tutaj.

.

Nowe funkcje

  • Nie można już wywoływać funkcji setPlayer ani setController za pomocą funkcji MediaControlView (MCV), jeśli funkcja MediaControlView należy do funkcji VideoView.

Poprawki błędów

  • MediaControlView: przyciski „Dalej” i „Wstecz” można kliknąć tylko wtedy, gdy są dostępne następne lub poprzednie elementy multimedialne.
  • MediaControlView: rozwiązano problem z niestabilnym działaniem funkcji NullPointerException podczas wywołania funkcji onAttachedToWindow()
  • Widget Media2 prawidłowo obsługuje metadane nowego elementu multimedialnego po zmianie bieżącego elementu multimedialnego.

Media2-Widget w wersji 1.0.0-beta01

2 lipca 2019 r.

androidx.media2:media2-widget:1.0.0-beta01 został zwolniony. Zmiany zawarte w tej wersji znajdziesz tutaj.

.

Nowe funkcje

  • Odtwarzanie w tle: zamiast tworzyć odtwarzacz w VideoView, VideoView może użyć SessionPlayer lub MediaController, aby aplikacja mogła płynnie przejść do trybu odtwarzania w tle.
  • Usunięto zależność od biblioteki media2-player
  • Dodano: onViewTypeChangedListener

Zmiany w interfejsie API

  • Zmiana widoczności z publicznego na chroniony:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Usunięto:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Dodano:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

Wersja 1.0.0-rc01

18 czerwca 2019 r.

Funkcje androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01androidx.media2:media2-session:1.0.0-rc01 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Zależność od ListenableFuture została przeniesiona z powrotem do samodzielnej implementacji Guavy.

  • Jeśli masz cele testów, które zależą od pełnego artefaktu Guava, podczas korzystania z pewnych wersji wtyczki Gradle dla Androida możesz napotkać konflikt podczas rozwiązywania zależności. Jeśli wystąpi błąd Could not resolve all artifacts dotyczący ListenableFuture, możesz tymczasowo obejść ten problem, dodając android.dependency.useConstraints=false do konfiguracji kompilacji projektu. Obecnie pracujemy nad trwałym rozwiązaniem problemu w ramach wtyczki Androida do obsługi Gradle, który zostanie wydany w przyszłości.

Wersja 1.0.0-beta02

5 czerwca 2019 r.

Funkcje androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02androidx.media2:media2-session:1.0.0-beta02 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Ustawienie ujemnej szybkości odtwarzania w androidx.media.player.MediaPlayer spowoduje błąd RESULT_ERROR_BAD_VALUE.
  • Zastąp Guava ListenableFuture implementacją Jetpack (aosp/968828)

Wersja 1.0.0-beta01

7 maja 2019 r.

Funkcje androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01androidx.media2:media2-session:1.0.0-beta01 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Biblioteki są podzielone na 3 części: media2-common, media2-player i media2-session.
  • Zmieniono argumenty null oznaczone jako @NonNull z IllegalPointerException na NullPointerException.

Zmiany w interfejsie API

  • Wprowadzono MediaController.Builder
  • Dodano metody ustawiania opcjonalnych pól klasy FileMediaItem.Builder.
  • MediaControllerMediaBrowser mogą wysyłać wskazówki dotyczące połączenia aplikacji do MediaSession, MediaSessionService lub MediaLibraryService
  • Niektóre metody zostały przemianowane, aby odpowiadały interfejsom Media2 w Androidzie 10

Wersja 1.0.0-alpha04

17 grudnia 2018 r.

Zmiany w interfejsie API

  • Zmieniono nazwy tych klas:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Połączone te zajęcia:
    • DataSourceDesc2 i MediaItem2 zostały połączone w MediaItem
    • MediaPlaylistAgent i MediaPlayerConnector zostały połączone w SessionPlayer
  • Dodano te podklasy typu Rating: HeartRating, PercentageRating, StarRating i ThumbRating
  • Media2 używa teraz ListenableFuture do metod asynchronicznych