Media2

Membagikan konten dan kontrol media ke aplikasi lain.
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.

Laporkan masalah baru

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 sekarang 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, gunakan androidx.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 dan MEDIA_URI_QUERY_URI telah ditambahkan dalam MediaConstants

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

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 dan MEDIA_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

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 melalui MediaSession#getSessionCompatToken()

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 memanggil getCurrentControllerInfo() pada MediaSessionCompat yang dirilis. (aosp/1423291]
  • Memperbaiki masalah MediaSession media2 yang tidak menyetel ID item antrean aktif ke PlaybackStateCompat (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 setelah MediaPlayer.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 di MediaPlayer#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 saat getDuration() dipanggil dalam status IDLE (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() dengan MediaBrowserService (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 sebelum setPlayer

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
  • 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 dan MediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Mendukung penomoran halaman yang lebih baik untuk membuka item media atau hasil penelusuran yang memuat banyak item
    • Dapat dioperasikan dengan MediaControllerCompat dan MediaBrowserServiceCompat
  • media2.session.MediaController
    • Dapat terhubung ke MediaSession, MediaSessionService, dan MediaLibraryService
    • Dapat dioperasikan dengan MediaSessionCompat dan MediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Mewarisi MediaController
    • Dapat terhubung ke MediaSession, MediaSessionService, dan MediaLibraryService
    • Dapat dioperasikan dengan MediaSessionCompat dan MediaBrowserServiceCompat
  • media2.widget.VideoView
    • Berisi semua fungsi android.widget.VideoView
    • Menyediakan peralihan antara TextureView dan SurfaceView
    • Dapat bekerja sama dengan MediaSession
  • 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 atau setController tidak lagi diizinkan untuk dipanggil melalui MediaControlView (MCV) saat MediaControlView menjadi milik VideoView

Perbaikan bug

  • MediaControlView: Tombol berikutnya dan sebelumnya hanya dapat diklik jika ada item media berikutnya atau sebelumnya
  • MediaControlView: Memperbaiki NullPointerException yang tidak stabil ketika onAttachedToWindow() 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)
  • Ditambahkan:
    • 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 melibatkan ListenableFuture, Anda dapat mengatasi masalah ini untuk sementara waktu dengan menambahkan android.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 menjadi NullPointerException untuk argumen null yang ditandai sebagai @NonNull.

Perubahan API

  • Memperkenalkan MediaController.Builder
  • Menambahkan metode penyetel untuk kolom opsional FileMediaItem.Builder
  • MediaController dan MediaBrowser dapat mengirimkan petunjuk koneksi aplikasi ke MediaSession, MediaSessionService, atau MediaLibraryService
  • 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:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Menggabungkan class berikut:
    • DataSourceDesc2 dan MediaItem2 telah digabungkan menjadi MediaItem
    • MediaPlaylistAgent dan MediaPlayerConnector telah digabungkan menjadi SessionPlayer
  • Menambahkan subclass Rating berikut: HeartRating, PercentageRating, StarRating, dan ThumbRating
  • Media2 kini menggunakan ListenableFuture untuk metode asinkron