Media2
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.
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 zasadyandroidx.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
iMEDIA_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
iMEDIA_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
- Dodaj obsługę (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)
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
- Poprawiono NPE z VersionedParcelable (I1ec28, b/177060207)
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 grupieMediaSession#getSessionCompatToken()
- Dodano:
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 funkcjigetCurrentControllerInfo()
na zwolnionym urządzeniuMediaSessionCompat
. (Aosp/1423291]) - Rozwiązaliśmy problem, który powodował, że element media2
MediaSession
nie ustawiał identyfikatora aktywnego elementu kolejki naPlaybackStateCompat
(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 poMediaPlayer.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
wMediaPlayer#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 komponentgetDuration()
w stanieIDLE
(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
przedsetPlayer
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
- Interfejsy API są w większości dopasowywane do zasobu
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
iMediaBrowserServiceCompat
- Lekka wersja aplikacji
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
iMediaBrowserServiceCompat
media2.session.MediaController
- Może się łączyć z urządzeniami
MediaSession
,MediaSessionService
iMediaLibraryService
. - Współdziałanie z
MediaSessionCompat
iMediaBrowserServiceCompat
- Może się łączyć z urządzeniami
media2.session.MediaBrowser
- Dziedziczy
MediaController
- Może się łączyć z urządzeniami
MediaSession
,MediaSessionService
iMediaLibraryService
. - Współdziałanie z
MediaSessionCompat
iMediaBrowserServiceCompat
- Dziedziczy
media2.widget.VideoView
- Zawiera wszystkie funkcje
android.widget.VideoView
- Umożliwia przełączanie się między
TextureView
aSurfaceView
- Może współpracować z grupą
MediaSession
- Zawiera wszystkie funkcje
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
lubsetController
nie mogą być już wywoływane przezMediaControlView
(MCV), gdyMediaControlView
należy doVideoView
Poprawki błędów
MediaControlView
: przyciski Dalej i Poprzedni można kliknąć tylko wtedy, gdy występują następny lub poprzedni element multimedialnyMediaControlView
: naprawiono niestabilny parametrNullPointerException
przy wywołaniu elementuonAttachedToWindow()
- 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ącyListenableFuture
, możesz tymczasowo obejść ten problem, dodającandroid.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
naNullPointerException
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
iMediaBrowser
mogą wysyłać wskazówki dotyczące połączenia aplikacji do:MediaSession
,MediaSessionService
lubMediaLibraryService
- 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ęć:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- Scalono te zajęcia:
- Jednostki organizacyjne
DataSourceDesc2
iMediaItem2
zostały połączone wMediaItem
- Jednostki organizacyjne
MediaPlaylistAgent
iMediaPlayerConnector
zostały połączone wSessionPlayer
- Jednostki organizacyjne
- Dodano te podklasy w klasie
Rating
:HeartRating
,PercentageRating
,StarRating
iThumbRating
Media2
używa teraz metodyListenableFuture
na potrzeby metod asynchronicznych