Media2
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ą.
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żyjandroidx.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
iMEDIA_URI_QUERY_URI
wMediaConstants
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
iMEDIA_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
- Dodanie obsługi (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)
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
- Usunięto NPE z VersionedParcelable (I1ec28, b/177060207).
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
przezMediaSession#getSessionCompatToken()
- Dodano:
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 metodygetCurrentControllerInfo()
w wypuszczonym obiekcieMediaSessionCompat
. (aosp/1423291] - Rozwiązaliśmy problem, który powodował, że media2
MediaSession
nie ustawiał identyfikatora aktywnego elementu kolejki naPlaybackStateCompat
(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 funkcjiMediaPlayer.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 plikuMediaPlayer#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 metodagetDuration()
w stanieIDLE
(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 funkcjiMediaBrowserService
(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 przedsetPlayer
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
, VideoView
i MediaControlView
.
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
- Interfejsy API są w większości dopasowywane do
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
iMediaBrowserServiceCompat
- Prosta wersja aplikacji
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
iMediaBrowserServiceCompat
media2.session.MediaController
- Może łączyć się z usługami
MediaSession
,MediaSessionService
iMediaLibraryService
- Interoperacyjność z
MediaSessionCompat
iMediaBrowserServiceCompat
- Może łączyć się z usługami
media2.session.MediaBrowser
- Dziedziczy
MediaController
- Może łączyć się z urządzeniami
MediaSession
,MediaSessionService
iMediaLibraryService
- Interoperacyjność 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
MediaSession
- Zawiera wszystkie funkcje
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
anisetController
za pomocą funkcjiMediaControlView
(MCV), jeśli funkcjaMediaControlView
należy do funkcjiVideoView
.
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 funkcjiNullPointerException
podczas wywołania funkcjionAttachedToWindow()
- 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-rc01
i androidx.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ącyListenableFuture
, możesz tymczasowo obejść ten problem, dodającandroid.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-beta02
i androidx.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-beta01
i androidx.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
naNullPointerException
.
Zmiany w interfejsie API
- Wprowadzono
MediaController.Builder
- Dodano metody ustawiania opcjonalnych pól klasy
FileMediaItem.Builder
. MediaController
iMediaBrowser
mogą wysyłać wskazówki dotyczące połączenia aplikacji doMediaSession
,MediaSessionService
lubMediaLibraryService
- 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:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- Połączone te zajęcia:
DataSourceDesc2
iMediaItem2
zostały połączone wMediaItem
MediaPlaylistAgent
iMediaPlayerConnector
zostały połączone wSessionPlayer
- Dodano te podklasy typu
Rating
:HeartRating
,PercentageRating
,StarRating
iThumbRating
Media2
używa terazListenableFuture
do metod asynchronicznych