Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Media2

Membagikan konten dan kontrol media dengan aplikasi lain.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
16 September 2020 1.0.3 - 1.1.0-beta01 -

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:

    dependencies {
        def media2_version = "1.0.3"

        // 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 informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau memiliki ide untuk meningkatkan kualitas library ini. Harap periksa library ini untuk mengetahui masalah yang sudah diketahui sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Melaporkan masalah baru

Baca dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 1.1.0-alpha01

Versi 1.1.0-beta01

16 September 2020

androidx.media2:media2-*:1.1.0-beta01 dirilis. Versi 1.1.0-beta01 berisi commit berikut 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 pencari 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 berikut.

Perbaikan Bug

  • Memperbaiki masalah pengaturan waktu saat mengupdate 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 berikut dan Versi 1.0.3 media2-widget berisi commit berikut

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 berikut dan Versi 1.0.2 media2-widget berisi commit berikut

Perbaikan bug

  • Memperbaiki IndexOutOfBoundsException di MediaPlayer#getSelectedTrack(). (aosp/987003)
  • Menyempurnakan 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)
  • Jangan izinkan Parcelable kustom untuk media2 (aosp/1091056)
  • Memperbaiki masalah yang menyebabkan hang dalam close() (aosp/1066455)
  • MediaBrowser: Menyempurnakan penanganan error dalam subscribe() dengan MediaBrowserService (aosp/1158057)
  • Memperbaiki error MediaController dengan Framework MediaSession (aosp/1177663)
  • Jangan beri tahu info sesi melalui callback saat sambungan dilakukan (aosp/1195030, b/142925848)
  • Memperbaiki masalah saat SessionResult dapat dikirimkan lebih dari sekali secara tidak terduga dari MediaController (aosp/1198634)
  • Memperbaiki masalah di mana 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 berikut dan androidx.media2:media2-widget:1.0.1 versi 1.0.1 berisi commit berikut.

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-{pemutar, sesi}: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)
  • 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 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 setter 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