Media2
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
10 Januari 2024 | 1.3.0 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Media2, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle
bagi aplikasi atau modul Anda:
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") }
Untuk mengetahui informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.3
Versi 1.3.0
10 Januari 2024
androidx.media2:media2-*:1.3.0
dirilis. Versi 1.3.0 berisi commit berikut ini.
Perubahan penting sejak versi 1.2.0
- androidx.media2 kini sepenuhnya tidak digunakan lagi. Sebagai gantinya, gunakan androidx.media3.
Versi 1.3.0-rc01
13 Desember 2023
androidx.media2:media2-*:1.3.0-rc01
dirilis tanpa perubahan dari Media2 1.3.0-beta01. Versi 1.3.0-rc01 berisi commit ini.
Versi 1.3.0-beta01
29 November 2023
androidx.media2:media2-*:1.3.0-beta01
dirilis tanpa perubahan dari Media2 1.3.0-alpha01
. Versi 1.3.0-beta01 berisi commit ini.
Versi 1.3.0-alpha01
15 November 2023
androidx.media2:media2-*:1.3.0-alpha01
dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Perubahan API
androidx.media2
kini sepenuhnya tidak digunakan lagi. Sebagai gantinya, gunakanandroidx.media3
. (I53164)
Versi 1.2.1
Versi 1.2.1
9 Februari 2022
androidx.media2:media2-*:1.2.1
dirilis. Versi 1.2.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki pemeriksaan untuk Parcelable kustom saat menargetkan API 33.
Versi 1.2.0
Versi 1.2.0
15 September 2021
androidx.media2:media2-*:1.2.0
dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
- Mendukung interoperabilitas dengan media AndroidX (prepare|play)From(MediaId|Uri|Search)
MEDIA_URI_PATH_SET_MEDIA_URI
danMEDIA_URI_QUERY_URI
telah ditambahkan dalamMediaConstants
Versi 1.2.0-rc01
1 September 2021
androidx.media2:media2-*:1.2.0-rc01
dirilis. Versi 1.2.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki ANR saat menutup notifikasi media (Ifdcc2, b/148011394)
Versi 1.2.0-beta01
30 Juni 2021
androidx.media2:media2-*:1.2.0-beta01
dirilis. Versi 1.2.0-beta01 berisi commit ini.
Fitur Baru
- Mendukung interoperabilitas dengan media AndroidX (prepare|play)From(MediaId|Uri|Search)
Perubahan API
- Menambahkan
MEDIA_URI_PATH_SET_MEDIA_URI
danMEDIA_URI_QUERY_URI
di MediaConstants
Versi 1.2.0-alpha01
21 April 2021
androidx.media2:media2-*:1.2.0-alpha01
dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Perubahan API
- Menambahkan dukungan untuk (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)
Perbaikan Bug
- Memperbaiki masalah deadlock yang disebabkan oleh blok tersinkronisasi yang tidak diperlukan.
- Mereset pemutar saat tidak ada item yang dapat diputar
- Mengizinkan onCurrentMediaItemChanged untuk mengambil item media null
- Membuat notifikasi diperbarui saat item media saat ini diubah
- Memperbaiki interop dengan compat pengontrol langsung setelah sesi dibuat
Versi 1.1.3
Versi 1.1.3
21 April 2021
androidx.media2:media2-*:1.1.3
dirilis. Versi 1.1.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah deadlock yang disebabkan oleh blok tersinkronisasi yang tidak diperlukan.
Versi 1.1.2
Versi 1.1.2
27 Januari 2021
androidx.media2:media2-*:1.1.2
dirilis. Versi 1.1.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki NPE dari VersionedParcelable (I1ec28, b/177060207)
Versi 1.1.1
Versi 1.1.1
16 Desember 2020
androidx.media2:media2-*:1.1.1
dirilis. Versi 1.1.1 berisi commit ini.
Perbaikan Bug
- Membuat notifikasi media diperbarui saat item media saat ini diubah.
Versi 1.1.0
Versi 1.1.0
2 Desember 2020
androidx.media2:media2-*:1.1.0
dirilis. Versi 1.1.0 berisi commit ini.
Perubahan utama sejak versi 1.0.0
- Menambahkan lebih banyak API untuk menangani jalur media
- Dukungan interoperabilitas yang lebih baik dengan library media AndroidX
- Menambahkan
MediaSession#setMediaUri
- Mengekspos
MediaSessionCompat.Token
melaluiMediaSession#getSessionCompatToken()
- Menambahkan
Versi 1.1.0-rc01
28 Oktober 2020
androidx.media2:media2-*:1.1.0-rc01
dirilis. Versi 1.1.0-rc01 berisi commit ini.
- Memperbaiki masalah MediaController yang memberi tahu callback saat mengunci, yang menyebabkan potensi deadlock (I76c56
- Memperbaiki masalah
MediaSessionImplBase#isClosed()
yang error saat memanggilgetCurrentControllerInfo()
padaMediaSessionCompat
yang dirilis. (aosp/1423291] - Memperbaiki masalah
MediaSession
media2 yang tidak menyetel ID item antrean aktif kePlaybackStateCompat
(aosp/1421652) - Menambahkan flag
BIND_INCLUDE_CAPABILITIES
saat melakukan binding ke layanan, yang memungkinkan aplikasi media headless mengakses lokasi jika aplikasi memiliki izin. Hal ini berguna khususnya untuk aplikasi Android Auto. (aosp/1440731)
Versi 1.1.0-beta01
16 September 2020
androidx.media2:media2-*:1.1.0-beta01
dirilis. Versi 1.1.0-beta01 berisi commit ini.
Perbaikan Bug
- Mereset posisi saat ini saat item media berubah
- Mengirim metadata dan status buffering saat terhubung
- Memperbaiki error saat mengirim data berukuran besar antara sesi dan pengontrol
- Menambahkan
<queries>
ke manifes untuk media dan media2 untuk Android 11 - Memperbaiki NPE untuk
MediaController.getPlaylist()
- Menonaktifkan status progres
MediaControlView
saat perintah pencarian tidak diizinkan - Memberi tahu
PlaybackStateCompat
saat item media sesi saat ini berubah - Memperbaiki pembagian
SessionPlayer.TrackInfo
Versi 1.1.0-alpha01
24 Juni 2020
androidx.media2:media2-*:1.1.0-alpha01
dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah pengaturan waktu saat memperbarui metadata (I45567, b/143999611)
- SessionResult akan mempertahankan MediaItem dari PlayerResult (I927b0, b/154885520)
- Memperbaiki bug yang menyebabkan
MediaController#setVolumeTo()
dapat mengubah volume streaming yang salah. (I76870, b/151204736)
Versi 1.0.3
Versi 1.0.3
19 Februari 2020
androidx.media2:media2-*:1.0.3
dirilis. Versi 1.0.3 media2-{common,player,session}
berisi commit ini dan Versi 1.0.3 media2-widget
berisi commit ini
Perbaikan Bug
- Memperbaiki NullPointerException saat membuat MediaController dengan callback null
- Memperbaiki masalah di mana
onPlaylistChanged()
tidak dipanggil setelahMediaPlayer.setMediaItem
Versi 1.0.2
Versi 1.0.2
5 Februari 2020
androidx.media2:media2-*:1.0.2
dirilis. Versi 1.0.2 media2-{common,player,session}
berisi commit ini dan Versi 1.0.2 media2-widget
berisi commit ini
Perbaikan bug
- Memperbaiki
IndexOutOfBoundsException
diMediaPlayer#getSelectedTrack()
. (aosp/987003) - Mengoptimalkan penanganan kasus di mana ExoPlayer memanggil getDuration() dan item media tidak ada (aosp/987484)
- Memperbaiki bug yang membuat ExoPlayer tidak melemparkan
IllegalStateException
saatgetDuration()
dipanggil dalam statusIDLE
(aosp/987246) - Tidak mengizinkan Parcelable kustom untuk media2 (aosp/1091056)
- Memperbaiki masalah yang menyebabkan hang dalam
close()
(aosp/1096455) - MediaBrowser: Mengoptimalkan penanganan error dalam
subscribe()
denganMediaBrowserService
(aosp/1158057) - Memperbaiki error MediaController dengan Framework MediaSession (aosp/1177663)
- Tidak memberitahukan info sesi melalui callback saat koneksi dilakukan (aosp/1195030, b/142925848)
- Memperbaiki masalah saat SessionResult dapat dikirimkan lebih dari sekali secara tidak terduga dari MediaController (aosp/1198634)
- Memperbaiki masalah saat MediaController mungkin mengirimkan perintah yang tidak diizinkan ke MediaSession, sehingga MediaSession sekarang mengirimkan
RESULT_ERROR_PERMISSION_DENIED
(aosp/1204183) - Memperbaiki masalah
MediaControllerView#setPlayer
yang tidak stabil (aosp/987004)
Versi 1.0.1
Versi 1.0.1
9 Oktober 2019
androidx.media2:media2-*:1.0.1
dirilis. androidx.media2:media2-{player, session}:1.0.1
versi 1.0.1 berisi commit ini dan androidx.media2:media2-widget:1.0.1
versi 1.0.1 berisi commit ini.
Perbaikan bug
- Memperbaiki RuntimeException ketika subclass MediaItem dikirim antar-proses (aosp/1098971)
- Memperbaiki masalah MediaPlayer yang hanya memanggil
onCurrentMediaItemChanged()
satu kali saat memutar playlist - Memperbaiki masalah MediaPlayer yang dapat memutar playlist dengan lebih dari 2 item (aosp/1108440)
- Memperbaiki masalah pemutar yang terus melakukan pemutaran dalam SurfaceView, meskipun diatur menjadi tidak terlihat
- Memperbaiki masalah pemutaran VideoView yang terjadi saat panggilan dilakukan ke
setViewType
sebelumsetPlayer
Versi 1.0.0
5 September 2019
androidx.media2:media2-*:1.0.0
dirilis. Berikut ini adalah commit yang disertakan dalam media2-{player, session}:1.0.0 dan berikut adalah commit yang disertakan dalam media2-widget:1.0.0.
Fitur Utama Media2 1.0.0
Media2 adalah penerus Media API berikut: MediaSession
, MediaController
, MediaBrowser
, MediaBrowserService
, VideoView
, dan MediaControlView
.
media2.player.MediaPlayer
- Sebagian besar API cocok dengan
android.media.MediaPlayer
, dan mesin yang digunakannya adalah ExoPlayer - Fokus audio bawaan dan penanganan kebisingan
- Menerapkan SessionPlayer
- Sebagian besar API cocok dengan
media2.session.MediaSession
- Menyediakan kontrol izin yang mendetail
- Mendukung tata letak kustom
- Mudah digunakan dengan SessionPlayer, seperti
androidx.media2.player.MediaPlayer
- Dapat dioperasikan dengan
MediaControllerCompat
media2.session.MediaSessionService
- Versi ringan dari
MediaLibraryService
- Menyediakan pengelolaan siklus proses layanan untuk pemutaran latar belakang
- Dapat dioperasikan dengan
MediaControllerCompat
danMediaBrowserServiceCompat
- Versi ringan dari
media2.session.MediaLibraryService
- Mendukung penomoran halaman yang lebih baik untuk membuka item media atau hasil penelusuran yang memuat banyak item
- Dapat dioperasikan dengan
MediaControllerCompat
danMediaBrowserServiceCompat
media2.session.MediaController
- Dapat terhubung ke
MediaSession
,MediaSessionService
, danMediaLibraryService
- Dapat dioperasikan dengan
MediaSessionCompat
danMediaBrowserServiceCompat
- Dapat terhubung ke
media2.session.MediaBrowser
- Mewarisi
MediaController
- Dapat terhubung ke
MediaSession
,MediaSessionService
, danMediaLibraryService
- Dapat dioperasikan dengan
MediaSessionCompat
danMediaBrowserServiceCompat
- Mewarisi
media2.widget.VideoView
- Berisi semua fungsi
android.widget.VideoView
- Menyediakan peralihan antara
TextureView
danSurfaceView
- Dapat bekerja sama dengan
MediaSession
- Berisi semua fungsi
media2.widget.MediaControlView
- Tampilan dan nuansa yang lebih baik
- Berisi semua fungsi
android.widget.MediaController
- Menyediakan pemilihan trek subtitel, pemilihan kecepatan pemutaran, dan mode layar penuh
Versi 1.0.0-rc02
22 Agustus 2019
androidx.media2:media2-*:1.0.0-rc02
dirilis dan perubahan yang disertakan dalam versi ini dapat dilihat di sini. Rilis ini menyertakan androidx.media2:media2-widget:1.0.0-rc02
dan perubahan yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
setPlayer
atausetController
tidak lagi diizinkan untuk dipanggil melaluiMediaControlView
(MCV) saatMediaControlView
menjadi milikVideoView
Perbaikan bug
MediaControlView
: Tombol berikutnya dan sebelumnya hanya dapat diklik jika ada item media berikutnya atau sebelumnyaMediaControlView
: MemperbaikiNullPointerException
yang tidak stabil ketikaonAttachedToWindow()
dipanggil- Media2 Widget sekarang menangani metadata item media baru dengan benar saat item media saat ini diubah
Media2-Widget Versi 1.0.0-beta01
2 Juli 2019
androidx.media2:media2-widget:1.0.0-beta01
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Pemutaran di latar belakang: Alih-alih membuat pemutar di dalam VideoView, VideoView dapat menggunakan SessionPlayer atau MediaController sehingga aplikasi dapat berpindah ke mode pemutaran latar belakang dengan mulus.
- Menghapus dependensi terhadap library media2-player
- Menambahkan
onViewTypeChangedListener
Perubahan API
- Visibilitas berubah dari publik menjadi dilindungi:
VideoView.onMeasure(int, int)
VideoView.onAttachedToWindow()
VideoView.onDetachedFromWindow()
MediaControlView.onMeasure(int, int)
- Menghapus:
VideoView.getSessionToken()
VideoView.setAudioAttributes(AudioAttributesCompat)
VideoView.setMedaItem(MediaItem)
MediaControlView.setSessionToken(SessionToken)
- Menambahkan:
VideoView.setMediaController(MediaController)
VideoView.getMediaControlView()
VideoView.setMediaController(MediaController)
VideoView.setPlayer(SessionPlayer)
VideoView.setOnViewTypeChangedListener()
MediaControlView.setPlayer(SessionPlayer)
MediaControlView.setMediaController(MediaContoller)
Versi 1.0.0-rc01
18 Juni 2019
androidx.media2:media2-common:1.0.0-rc01
, androidx.media2:media2-player:1.0.0-rc01
, dan androidx.media2:media2-session:1.0.0-rc01
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
Dependensi pada
ListenableFuture
telah dimigrasikan kembali ke penerapan mandiri Guava.Perhatikan bahwa jika Anda memiliki target pengujian yang bergantung pada artefak Guava penuh, Anda mungkin akan mengalami konflik resolusi dependensi saat menggunakan Plugin Android Gradle versi tertentu. Jika mengalami error
Could not resolve all artifacts
yang melibatkanListenableFuture
, Anda dapat mengatasi masalah ini untuk sementara waktu dengan menambahkanandroid.dependency.useConstraints=false
ke konfigurasi build project Anda. Saat ini, kami mengupayakan perbaikan permanen di dalam Plugin Android Gradle yang akan dirilis pada waktu mendatang.
Versi 1.0.0-beta02
5 Juni 2019
androidx.media2:media2-common:1.0.0-beta02
, androidx.media2:media2-player:1.0.0-beta02
, dan androidx.media2:media2-session:1.0.0-beta02
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Menetapkan kecepatan pemutaran negatif di androidx.media.player.MediaPlayer akan menampilkan RESULT_ERROR_BAD_VALUE.
- Mengganti Guava ListenableFuture dengan penerapan Jetpack (aosp/968828)
Versi 1.0.0-beta01
7 Mei 2019
androidx.media2:media2-common:1.0.0-beta01
, androidx.media2:media2-player:1.0.0-beta01
, dan androidx.media2:media2-session:1.0.0-beta01
dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Library dibagi menjadi 3 bagian: media2-common, media2-player, media2-session
- Mengubah
IllegalPointerException
menjadiNullPointerException
untuk argumen null yang ditandai sebagai @NonNull.
Perubahan API
- Memperkenalkan
MediaController.Builder
- Menambahkan metode penyetel untuk kolom opsional
FileMediaItem.Builder
MediaController
danMediaBrowser
dapat mengirimkan petunjuk koneksi aplikasi keMediaSession
,MediaSessionService
, atauMediaLibraryService
- Beberapa metode diganti namanya agar sesuai dengan Android 10 Media2 API
Versi 1.0.0-alpha04
17 Desember 2018
Perubahan API
- Mengganti nama class berikut:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- Menggabungkan class berikut:
DataSourceDesc2
danMediaItem2
telah digabungkan menjadiMediaItem
MediaPlaylistAgent
danMediaPlayerConnector
telah digabungkan menjadiSessionPlayer
- Menambahkan subclass
Rating
berikut:HeartRating
,PercentageRating
,StarRating
, danThumbRating
Media2
kini menggunakanListenableFuture
untuk metode asinkron