Media2

Udostępniaj treści multimedialne i elementy sterujące innym aplikacjom.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
10 stycznia 2024 r. 1.3.0 - - -

Deklarowanie zależności

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

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

Odlotowe

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ć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

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

Wersja 1.3

Wersja 1.3.0

10 stycznia 2024 r.

Aplikacja androidx.media2:media2-*:1.3.0 została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.2.0

  • Interfejs androidx.media2 został całkowicie wycofany. Zamiast niego używaj pliku androidx.media3.

Wersja 1.3.0-rc01

13 grudnia 2023 r.

Opublikowano wersję androidx.media2:media2-*:1.3.0-rc01 bez zmian w porównaniu z Media2 1.3.0-beta01. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Wersja 1.3.0-beta01

29 listopada 2023 r.

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

Wersja 1.3.0-alfa01

15 listopada 2023 r.

Aplikacja androidx.media2:media2-*:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejs androidx.media2 został całkowicie wycofany. Użyj w zamian zasady androidx.media3. (I53164)

Wersja 1.2.1

Wersja 1.2.1

9 lutego 2022 r.

Aplikacja androidx.media2:media2-*:1.2.1 została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono sprawdzanie niestandardowych elementów Parcelable w przypadku kierowania na interfejs API 33.

Wersja 1.2.0

Wersja 1.2.0

15 września 2021 r.

Aplikacja androidx.media2:media2-*:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Obsługa interoperacyjności z multimediami AndroidaX w przypadku (prepare|play)From(MediaId|Uri|Search)
  • Dodano MEDIA_URI_PATH_SET_MEDIA_URI i MEDIA_URI_QUERY_URI w: MediaConstants

Wersja 1.2.0-rc01

1 września 2021 roku

Aplikacja androidx.media2:media2-*:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd ANR podczas zamykania powiadomienia o multimediach (Ifdcc2, b/148011394)

Wersja 1.2.0-beta01

30 czerwca 2021 r.

Aplikacja androidx.media2:media2-*:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Obsługa interoperacyjności z multimediami AndroidaX w przypadku (prepare|play)From(MediaId|Uri|Search)

Zmiany w interfejsie API

  • Dodano MEDIA_URI_PATH_SET_MEDIA_URI i MEDIA_URI_QUERY_URI w MediaConstants

Wersja 1.2.0-alfa01

21 kwietnia 2021 r.

Aplikacja androidx.media2:media2-*:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

Poprawki błędów

  • Naprawianie problemu z blokiem wzajemnym spowodowanym przez niepotrzebne zsynchronizowane bloki.
  • Resetowanie odtwarzacza, gdy nie ma elementów, które można odtworzyć
  • Zezwalaj onCurrentMediaItemChanged na przyjmowanie elementu multimedialnego o wartości null
  • Aktualizowanie powiadomienia po zmianie bieżącego elementu multimedialnego
  • Napraw współdziałanie z kompatybilnością kontrolera zaraz po utworzeniu sesji

Wersja 1.1.3

Wersja 1.1.3

21 kwietnia 2021 r.

Aplikacja androidx.media2:media2-*:1.1.3 została zwolniona. Wersja 1.1.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawianie problemu z blokiem wzajemnym spowodowanym przez niepotrzebne zsynchronizowane bloki.

Wersja 1.1.2

Wersja 1.1.2

27 stycznia 2021 r.

Aplikacja androidx.media2:media2-*:1.1.2 została zwolniona. Wersja 1.1.2 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.1.1

Wersja 1.1.1

16 grudnia 2020 roku

Aplikacja androidx.media2:media2-*:1.1.1 została zwolniona. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Aktualizuje powiadomienie o multimediach, gdy bieżący element multimedialny zostanie zmieniony.

Wersja 1.1.0

Wersja 1.1.0

Grudzień 2, 2020

Aplikacja androidx.media2:media2-*:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne 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
    • Grupa eksperymentalna (MediaSessionCompat.Token) w grupie MediaSession#getSessionCompatToken()

Wersja 1.1.0-rc01

28 października 2020 r.

Aplikacja androidx.media2:media2-*:1.1.0-rc01 została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

  • Naprawiono problem, który powodował, że MediaController informowała o wywołaniach zwrotnych podczas przytrzymywania blokady, co prowadziło do potencjalnych blokad wzajemnych (I76c56
  • Rozwiązaliśmy problem, który powodował awarię usługi MediaSessionImplBase#isClosed() podczas wywoływania funkcji getCurrentControllerInfo() na zwolnionym urządzeniu MediaSessionCompat. (Aosp/1423291])
  • Rozwiązaliśmy problem, który powodował, że element media2 MediaSession nie ustawiał identyfikatora aktywnego elementu kolejki na PlaybackStateCompat (aosp/1421652).
  • W trakcie wiązania z usługą dodano flagę BIND_INCLUDE_CAPABILITIES, która umożliwia aplikacjom do multimediów bez interfejsu graficznego dostęp do lokalizacji, jeśli mają odpowiednie uprawnienia. Przydaje się to szczególnie w przypadku aplikacji na Androida Auto. (Aosp/1440731)

Wersja 1.1.0-beta01

16 września 2020 roku

Aplikacja androidx.media2:media2-*:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Poprawki błędów

  • Zresetuj bieżącą pozycję po zmianie elementu multimedialnego
  • Wyślij metadane i stan buforowania po nawiązaniu połączenia
  • Naprawianie awarii występującej podczas wysyłania dużych danych między sesją a kontrolerem
  • Dodaj <queries> do pliku manifestu w przypadku multimediów i mediów2 na Androida 11
  • Popraw NPE w przypadku aplikacji MediaController.getPlaylist()
  • Wyłącz pasek postępu MediaControlView, gdy polecenie przewijania jest niedozwolone
  • Powiadom użytkownika PlaybackStateCompat o zmianie bieżącego elementu multimedialnego w sesji
  • Napraw paczkę SessionPlayer.TrackInfo

Wersja 1.1.0-alfa01

24 czerwca 2020 r.

Aplikacja androidx.media2:media2-*:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązaliśmy problem z czasem aktualizowania metadanych (I45567, b/143999611)
  • SessionResult zachowa element MediaItem z PlayResult (I927b0, b/154885520)
  • Naprawiliśmy błąd, który powodował, że MediaController#setVolumeTo() mógł zmieniać nieprawidłową głośność transmisji. (I76870, b/151204736)

Wersja 1.0.3

Wersja 1.0.3

19 lutego 2020 r.

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

Poprawki błędów

  • Usunięto wyjątek NullPointerException podczas tworzenia obiektu MediaController z wywołaniem zwrotnym o wartości null.
  • Rozwiązanie problemu polegającego na tym, że funkcja onPlaylistChanged() nie była wywoływana po MediaPlayer.setMediaItem

Wersja 1.0.2

Wersja 1.0.2

5 lutego 2020 r.

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

Poprawki błędów

  • Naprawiono błąd IndexOutOfBoundsException w MediaPlayer#getSelectedTrack(). (Aosp/987003)
  • Ulepszona obsługa przypadku, gdy ExoPlayer wywołuje metodę getDuration(), a element multimedialny nie istnieje (aosp/987484)
  • Naprawiono błąd, który powodował, że ExoPlayer nie zgłaszał obiektu IllegalStateException, gdy wywoływany jest komponent getDuration() w stanie IDLE (aosp/987246)
  • Nie zezwalaj na używanie niestandardowych interfejsów API w przypadku media2 (aosp/1091056)
  • Naprawiono problem z zawieszaniem się urządzenia close() (aosp/1096455)
  • MediaBrowser: ulepszona obsługa błędów w subscribe() za pomocą MediaBrowserService (aosp/1158057)
  • Usunięto awarię MediaController za pomocą obiektu Framework MediaSession(aosp/1177663)
  • Nie powiadamiaj informacji o sesji za pomocą wywołań zwrotnych o nawiązywaniu połączenia (aosp/1195030, b/142925848)
  • Rozwiązaliśmy problem, który powodował nieoczekiwanie nieoczekiwane wysyłanie wyniku sesji z poziomu MediaController (aosp/1198634).
  • Rozwiązaliśmy problem, który powodował, że element MediaController mógł wysyłać niedozwolone polecenia do MediaSession, więc MediaSession wysyła teraz plik RESULT_ERROR_PERMISSION_DENIED (aosp/1204183).
  • Naprawiono problem z niestabilnym działaniem funkcji MediaControllerView#setPlayer (aosp/987004)

Wersja 1.0.1

Wersja 1.0.1

9 października 2019 r.

Aplikacja androidx.media2:media2-*:1.0.1 została zwolniona. Wersja 1.0.1 systemu androidx.media2:media2-{player, session}:1.0.1 zawiera te zatwierdzenia, a wersja 1.0.1 androidx.media2:media2-widget:1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono wyjątek RuntimeException, który powodował wysyłanie przez proces podklasy elementu MediaItem (aosp/1098971).
  • Naprawiono błąd, który powodował, że podczas odtwarzania playlisty MediaPlayer wywołuje funkcję onCurrentMediaItemChanged() tylko raz.
  • Rozwiązaliśmy problem, który powodował, że funkcja MediaPlayer mogła odtwarzać playlistę z więcej niż 2 elementami (aosp/1108440).
  • Naprawiono problem z odtwarzaniem w SurfaceView, mimo że odtwarzacz był niewidoczny.
  • Usunięto problem z odtwarzaniem VideoView, który występował, gdy wywołanie zostało wykonane do setViewType przed setPlayer

Wersja 1.0.0

5 września 2019 r.

Aplikacja androidx.media2:media2-*:1.0.0 została zwolniona. To są zobowiązania uwzględnione media2-{player, session}:1.0.0 oraz zobowiązania zawarte w media2-Widget:1.0.0.

Główne funkcje Media2 w wersji 1.0.0

Media2 to nowa generacja tych interfejsów API multimediów: MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoView i MediaControlView.

  • media2.player.MediaPlayer
    • Interfejsy API są w większości dopasowywane do zasobu android.media.MediaPlayer, a podstawowy silnik to ExoPlayer
    • Wbudowana funkcja skupienia dźwięku i obsługi szumów
    • Implementuje komponent SessionPlayer
  • media2.session.MediaSession
    • Szczegółowa kontrola uprawnień
    • Obsługuje układy niestandardowe
    • Łatwa obsługa za pomocą narzędzia SessionPlayer, takiego jak androidx.media2.player.MediaPlayer
    • Współdziałanie z MediaControllerCompat
  • media2.session.MediaSessionService
    • Lekka wersja aplikacji MediaLibraryService
    • Zapewnia zarządzanie cyklem życia usługi w przypadku odtwarzania w tle
    • Współdziałanie z MediaControllerCompat i MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • lepszy podział na strony podczas nawigacji po elementach multimedialnych lub wynikach wyszukiwania zawierających wiele elementów;
    • Współdziałanie z MediaControllerCompat i MediaBrowserServiceCompat
  • media2.session.MediaController
    • Może się łączyć z urządzeniami MediaSession, MediaSessionService i MediaLibraryService.
    • Współdziałanie z MediaSessionCompat i MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Dziedziczy MediaController
    • Może się łączyć z urządzeniami MediaSession, MediaSessionService i MediaLibraryService.
    • Współdziałanie z MediaSessionCompat i MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Zawiera wszystkie funkcje android.widget.VideoView
    • Umożliwia przełączanie się między TextureView a SurfaceView
    • Może współpracować z grupą MediaSession
  • media2.widget.MediaControlView
    • Bardziej atrakcyjny wygląd i styl
    • Zawiera wszystkie funkcje android.widget.MediaController
    • Umożliwia wybór ścieżki napisów, wybór szybkości odtwarzania oraz tryb pełnoekranowy

Wersja 1.0.0-rc02

22 sierpnia 2019 r.

Aplikacja androidx.media2:media2-*:1.0.0-rc02 została opublikowana. Zmiany wprowadzone w tej wersji znajdziesz tutaj. Ta wersja zawiera androidx.media2:media2-widget:1.0.0-rc02. Zmiany w niej znajdziesz tutaj.

Nowe funkcje

  • setPlayer lub setController nie mogą być już wywoływane przez MediaControlView (MCV), gdy MediaControlView należy do VideoView

Poprawki błędów

  • MediaControlView: przyciski Dalej i Poprzedni można kliknąć tylko wtedy, gdy występują następny lub poprzedni element multimedialny
  • MediaControlView: naprawiono niestabilny parametr NullPointerException przy wywołaniu elementu onAttachedToWindow()
  • Widżet Media2 prawidłowo obsługuje teraz metadane nowego elementu multimedialnego w przypadku zmiany bieżącego elementu multimedialnego

Media2-Widget w wersji 1.0.0-beta01

2 lipca 2019 r.

Aplikacja androidx.media2:media2-widget:1.0.0-beta01 została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

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

Zmiany w interfejsie API

  • Zmiana widoczności z publicznej na chronioną:
    • 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.

Opublikowano androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01 i androidx.media2:media2-session:1.0.0-rc01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Zależności ListenableFuture zostały przeniesione z powrotem do samodzielnej implementacji Guavy.

  • Pamiętaj, że jeśli masz cele testowe, które są zależne od pełnego artefaktu Guava, podczas używania niektórych wersji wtyczki Androida do obsługi Gradle może wystąpić konflikt dotyczący rozwiązywania zależności. Jeśli napotkasz 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 w projekcie. Pracujemy obecnie nad poprawką, która zostanie rozszerzona we wtyczce Androida do obsługi Gradle.

Wersja 1.0.0-beta02

5 czerwca 2019 r.

Opublikowano androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02 i androidx.media2:media2-session:1.0.0-beta02. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Poprawki błędów

  • Ustawienie ujemnej szybkości odtwarzania w odtwarzaczu androidx.media.player.MediaPlayer zwróci wartość RESULT_ERROR_BAD_VALUE.
  • Zastąp Guava ListenableFuture implementacją Jetpacka (aosp/968828)

Wersja 1.0.0-beta01

7 maja 2019 r.

Opublikowano androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01 i androidx.media2:media2-session:1.0.0-beta01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Biblioteki są podzielone na 3 części: media2-common, media2-player, media2-session
  • Zmieniono IllegalPointerException na NullPointerException dla pustych argumentów oznaczonych jako @NonNull.

Zmiany w interfejsie API

  • Data wprowadzenia: MediaController.Builder
  • Dodano metody ustawiające w polach opcjonalnych: FileMediaItem.Builder
  • MediaController i MediaBrowser mogą wysyłać wskazówki dotyczące połączenia aplikacji do: MediaSession, MediaSessionService lub MediaLibraryService
  • Zmieniono nazwy niektórych metod, aby były zgodne z interfejsami API Android 10 Media2

Wersja 1.0.0-alfa04

17 grudnia 2018 r.

Zmiany w interfejsie API

  • Zmieniliśmy nazwy tych zajęć:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Scalono te zajęcia:
    • Jednostki organizacyjne DataSourceDesc2 i MediaItem2 zostały połączone w MediaItem
    • Jednostki organizacyjne MediaPlaylistAgent i MediaPlayerConnector zostały połączone w SessionPlayer
  • Dodano te podklasy w klasie Rating: HeartRating, PercentageRating, StarRating i ThumbRating
  • Media2 używa teraz metody ListenableFuture na potrzeby metod asynchronicznych