Media2

Chia sẻ nội dung nghe nhìn và bộ điều khiển với các ứng dụng khác.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 9 tháng 2 năm 2022 1.2.1 - - -

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Media2, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

dependencies {
    def media2_version = "1.2.1"

    // 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.2.1"

    // 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")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể bình chọn cho vấn đề hiện có bằng cách nhấp vào dấu sao.

Báo lỗi mới

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.2.1

Phiên bản 1.2.1

Ngày 9 tháng 2 năm 2022

Phát hành androidx.media2:media2-*:1.2.1. Phiên bản 1.2.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố kiểm tra đối với Parcelables tuỳ chỉnh khi nhắm mục tiêu API 33.

Phiên bản 1.2.0

Phiên bản 1.2.0

Ngày 15 tháng 9 năm 2021

Phát hành androidx.media2:media2-*:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Những thay đổi quan trọng kể từ phiên bản 1.1.0

  • Hỗ trợ khả năng tương tác với trình đa phương tiện (prepare|play)From(MediaId|Uri|Search) của AndroidX
  • Thêm MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI vào MediaConstants

Phiên bản 1.2.0-rc01

Ngày 1 tháng 9 năm 2021

Phát hành androidx.media2:media2-*:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục lỗi ANR khi đóng thông báo đa phương tiện (Ifdcc2, b/148011394)

Phiên bản 1.2.0-beta01

Ngày 30 tháng 6 năm 2021

Phát hành androidx.media2:media2-*:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ khả năng tương tác với trình đa phương tiện (prepare|play)From(MediaId|Uri|Search) của AndroidX

Thay đổi về API

  • Thêm MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI trong MediaConstants

Phiên bản 1.2.0-alpha01

Ngày 21 tháng 4 năm 2021

Phát hành androidx.media2:media2-*:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Thay đổi về API

  • Thêm tính năng hỗ trợ cho (prepare|play)From(MediaId|Uri|Search) (I13475, b/176949057)

Sửa lỗi

  • Khắc phục sự cố gây nghẽn xảy ra do các khối được đồng bộ hoá không cần thiết.
  • Cài đặt lại trình phát khi không có mục có thể phát
  • Cho phép onCurrentMediaItemChanged nhận mục đa phương tiện rỗng
  • Cập nhật thông báo ngay khi thay đổi mục đa phương tiện hiện tại
  • Khắc phục sự cố khả năng tương tác với bộ điều khiển tương thích ngay sau khi tạo phiên

Phiên bản 1.1.3

Phiên bản 1.1.3

Ngày 21 tháng 4 năm 2021

Phát hành androidx.media2:media2-*:1.1.3. Phiên bản 1.1.3 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố gây nghẽn xảy ra do các khối được đồng bộ hoá không cần thiết.

Phiên bản 1.1.2

Phiên bản 1.1.2

Ngày 27 tháng 1 năm 2021

Phát hành androidx.media2:media2-*:1.1.2. Phiên bản 1.1.2 bao gồm các thay đổi sau.

Sửa lỗi

Phiên bản 1.1.1

Phiên bản 1.1.1

Ngày 16 tháng 12 năm 2020

Phát hành androidx.media2:media2-*:1.1.1. Phiên bản 1.1.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Cập nhật thông báo nội dung đa phương tiện khi mục nội dung đa phương tiện này được thay đổi.

Phiên bản 1.1.0

Phiên bản 1.1.0

Ngày 2 tháng 12 năm 2020

Phát hành androidx.media2:media2-*:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

Thay đổi lớn kể từ phiên bản 1.0.0

  • Thêm nhiều API khác để xử lý các bản nhạc đa phương tiện
  • Hỗ trợ tốt hơn cho khả năng tương tác với thư viện đa phương tiện AndroidX
    • Thêm MediaSession#setMediaUri
    • Đặt MediaSessionCompat.Token thông qua MediaSession#getSessionCompatToken()

Phiên bản 1.1.0-rc01

Ngày 28 tháng 10 năm 2020

Phát hành androidx.media2:media2-*:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

  • Khắc phục lỗi MediaController đã thông báo các lệnh gọi lại khi giữ khoá, dẫn đến các tắc nghẽn có thể xảy ra (I76c56
  • Khắc phục lỗi MediaSessionImplBase#isClosed() có thể gặp sự cố khi gọi getCurrentControllerInfo() trên MediaSessionCompat đã phát hành. (aosp/1423291]
  • Khắc phục lỗi media2 MediaSession không đặt mã mục xếp hàng đang hoạt động thành PlaybackStateCompat (aosp/1421652)
  • Gắn thêm cờ vào mã BIND_INCLUDE_CAPABILITIES khi liên kết dịch vụ, cho phép các ứng dụng đa phương tiện không có giao diện người dùng truy cập thông tin vị trí nếu có quyền truy cập. Điều này sẽ đặc biệt hữu ích đối với các ứng dụng Android Auto. (aosp/1440731)

Phiên bản 1.1.0-beta01

Ngày 16 tháng 9 năm 2020

Phát hành androidx.media2:media2-*:1.1.0-beta01. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Đặt lại thông tin vị trí hiện tại khi mục nội dung đa phương tiện thay đổi
  • Gửi siêu dữ liệu và trạng thái lưu vào bộ đệm khi được kết nối
  • Khắc phục sự cố khi gửi dữ liệu lớn giữa một phiên và một bộ điều khiển
  • Thêm mã <queries> vào tệp kê khai đối với media và media2 cho Android 11
  • Sửa lỗi NPE cho MediaController.getPlaylist()
  • Tắt thanh tiến trình của MediaControlView khi không cho phép lệnh tìm kiếm
  • Thông báo cho PlaybackStateCompat khi mục đa phương tiện hiện tại của một phiên đã thay đổi
  • Sửa lỗi phân vùng của SessionPlayer.TrackInfo

Phiên bản 1.1.0-alpha01

Ngày 24 tháng 6 năm 2020

Phát hành androidx.media2:media2-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi về thời gian khi cập nhật siêu dữ liệu (I45567, b/143999611)
  • SessionResult sẽ lưu giữ MediaItem từ PlayerResult (I927b0, b/154885520)
  • Sửa lỗi MediaController#setVolumeTo() có thể thay đổi âm lượng phát trực tiếp không chính xác. (I76870, b/151204736)

Phiên bản 1.0.3

Phiên bản 1.0.3

Ngày 19 tháng 2 năm 2020

Phát hành androidx.media2:media2-*:1.0.3. Phiên bản 1.0.3 của media2-{common,player,session} bao gồm các thay đổi sauPhiên bản 1.0.3 của media2-widget bao gồm các thay đổi sau

Sửa lỗi

  • Khắc phục lỗi NullPointerException khi tạo MediaController với lệnh gọi lại rỗng
  • Khắc phục lỗi onPlaylistChanged() không gọi được lệnh sau MediaPlayer.setMediaItem

Phiên bản 1.0.2

Phiên bản 1.0.2

Ngày 5 tháng 2 năm 2020

Phát hành androidx.media2:media2-*:1.0.2. Phiên bản 1.0.2 của media2-{common,player,session} bao gồm các thay đổi sauPhiên bản 1.0.2 của media2-widget bao gồm các thay đổi sau

Sửa lỗi

  • Khắc phục lỗi IndexOutOfBoundsException trong MediaPlayer#getSelectedTrack(). (aosp/987003)
  • Nâng cấp xử lý trường hợp trong đó ExoPlayer gọi lệnh getDuration() và mục đa phương tiện không tồn tại (aosp/987484)
  • Sửa lỗi ExoPlayer không gửi IllegalStateException khi getDuration() được gọi ở trạng thái IDLE (aosp/987246)
  • Không cho phép Parcelables tuỳ chỉnh đối với media2 (aosp/1091056)
  • Sửa lỗi gây hiện tượng treo trong close() (aosp/1096455)
  • MediaBrowser: Cải thiện việc xử lý các lỗi trong subscribe() với MediaBrowserService (aosp/1158057)
  • Khắc phục sự cố MediaController với Framework MediaSession(aosp/1177663)
  • Không thông báo thông tin phiên qua các lệnh gọi lại khi kết nối được thực hiện (aosp/1195030, b/142925848)
  • Khắc phục lỗi SessionResult có thể được MediaController gửi nội dung đột ngột nhiều lần (aosp/1198634)
  • Khắc phục lỗi trong đó MediaController có thể gửi các lệnh không được phép đến MediaSession, vì vậy hiện tại MediaSession gửi RESULT_ERROR_PERMISSION_DENIED (aosp/1204183)
  • Sửa một lỗi không ổn định với MediaControllerView#setPlayer (aosp/987004)

Phiên bản 1.0.1

Phiên bản 1.0.1

Ngày 9 tháng 10 năm 2019

Phát hành androidx.media2:media2-*:1.0.1. Phiên bản 1.0.1 của androidx.media2:media2-{player, session}:1.0.1 bao gồm các thay đổi sauPhiên bản 1.0.1 của androidx.media2:media2-widget:1.0.1 bao gồm các thay đổi sau

Sửa lỗi

  • Sửa lỗi RuntimeException khi một lớp con của MediaItem được gửi qua quy trình (aosp/1098971)
  • Khắc phục lỗi trong đó MediaPlayer chỉ gọi mã onCurrentMediaItemChanged() một lần khi bật danh sách phát
  • Khắc phục lỗi trong đó MediaPlayer có thể bật danh sách phát nhiều hơn 2 mục (aosp/1108440)
  • Khắc phục lỗi trong đó trình phát tiếp tục phát trên SurfaceView, mặc dù trình phát này không hiển thị
  • Khắc phục lỗi bật lại VideoView xuất hiện khi lệnh gọi được tạo cho setViewType trước setPlayer

Phiên bản 1.0.0

Ngày 5 tháng 9 năm 2019

Phát hành androidx.media2:media2-*:1.0.0. Đây là các thay đổi được bao gồm media2-{player, session}:1.0.0 và đây là các thay đổi được bao gồm media2-widget:1.0.0.

Các tính năng chính của Media2 1.0.0

Media2 là thế hệ tiếp theo của các API đa phương tiện sau đây: MediaSession, MediaController, MediaBrowser, MediaBrowserService, VideoViewMediaControlView.

  • media2.player.MediaPlayer
    • Các API đa phần được khớp với android.media.MediaPlayer và công cụ cơ bản là ExoPlayer
    • Tích hợp quyền phát âm thanh và ô điều khiển tiếng ồn
    • Triển khai SessionPlayer
  • media2.session.MediaSession
    • Cung cấp các quyền kiểm soát chi tiết
    • Hỗ trợ các bố cục tuỳ chỉnh
    • Dễ dàng sử dụng với sessionPlayer, chẳng hạn như androidx.media2.player.MediaPlayer
    • Có khả năng tương tác với MediaControllerCompat
  • media2.session.MediaSessionService
    • Phiên bản gọn nhẹ của MediaLibraryService
    • Cung cấp tính năng quản lý vòng đời dịch vụ để phát trong nền
    • Có khả năng tương tác với MediaControllerCompatMediaBrowserServiceCompat
  • media2.session.MediaLibraryService
    • Hỗ trợ phân trang tốt hơn để điều hướng các mục đa phương tiện hoặc kết quả tìm kiếm chứa nhiều mục
    • Có khả năng tương tác với MediaControllerCompatMediaBrowserServiceCompat
  • media2.session.MediaController
    • Có thể kết nối với MediaSession, MediaSessionServiceMediaLibraryService
    • Có khả năng tương tác với MediaSessionCompatMediaBrowserServiceCompat
  • media2.session.MediaBrowser
    • Kế thừa MediaController
    • Có thể kết nối với MediaSession, MediaSessionServiceMediaLibraryService
    • Có khả năng tương tác với MediaSessionCompatMediaBrowserServiceCompat
  • media2.widget.VideoView
    • Chứa tất cả chức năng của android.widget.VideoView
    • Cung cấp chuyển đổi giữa TextureViewSurfaceView
    • Có thể làm việc cùng với MediaSession
  • media2.widget.MediaControlView
    • Giao diện và trải nghiệm tốt hơn
    • Chứa tất cả chức năng của android.widget.MediaController
    • Cung cấp lựa chọn bản phụ đề, lựa chọn tốc độ phát và chế độ toàn màn hình

Phiên bản 1.0.0-rc02

Ngày 22 tháng 8 năm 2019

androidx.media2:media2-*:1.0.0-rc02 đã được phát hành và bạn có thể tìm những thay đổi có trong phiên bản này tại đây. Bản phát hành này gồm androidx.media2:media2-widget:1.0.0-rc02 và bạn có thể tìm những thay đổi có trong phiên bản này tại đây.

Tính năng mới

  • setPlayer hoặc setController không còn được phép gọi lệnh qua MediaControlView (MCV) nữa khi MediaControlView thuộc về VideoView

Sửa lỗi

  • MediaControlView: Các nút tiếp theo và nút trước chỉ có thể nhấp được khi có các mục nội dung đa phương tiện tiếp theo hoặc trước đó
  • MediaControlView: Sửa lỗi NullPointerException không ổn định khi gọi onAttachedToWindow()
  • Hiện tại, tiện ích Media2 xử lý siêu dữ liệu của mục nội dung đa phương tiện mới đúng cách khi mục nội dung đa phương tiện hiện tại thay đổi

Media2-Widget phiên bản 1.0.0-beta01

Ngày 2 tháng 7 năm 2019

Phát hành androidx.media2:media2-widget:1.0.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Phát ở chế độ nền: Thay vì tạo trình phát bên trong VideoView, VideoView có thể sử dụng SessionPlayer hoặc MediaController để ứng dụng có thể chuyển sang chế độ phát ở chế độ nền một cách liền mạch.
  • Xoá phần phụ thuộc với thư viện media2-player
  • Thêm onViewTypeChangedListener

Thay đổi về API

  • Chế độ hiển thị thay đổi từ công khai thành được bảo vệ:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • Xoá:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • Thêm:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

Phiên bản 1.0.0-rc01

Ngày 18 tháng 6 năm 2019

Phát hành androidx.media2:media2-common:1.0.0-rc01, androidx.media2:media2-player:1.0.0-rc01androidx.media2:media2-session:1.0.0-rc01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • Các phần phụ thuộc vào ListenableFuture đã được di chuyển trở lại phần triển khai độc lập của Guava.

  • Lưu ý rằng nếu bạn có các mục tiêu thử nghiệm phụ thuộc vào cấu phần phần mềm Guava đầy đủ, bạn có thể phải giải quyết xung đột phần phụ thuộc khi sử dụng một số phiên bản nhất định của Android Gradle Plugin. Nếu gặp phải lỗi Could not resolve all artifacts liên quan đến ListenableFuture, bạn có thể tạm thời khắc phục sự cố này bằng cách thêm android.dependency.useConstraints=false vào cấu hình của bản dựng của dự án. Chúng tôi đang làm việc trên một bản sửa lỗi vĩnh viễn trong Plugin Android Gradle. Bản sửa lỗi đó sẽ được phát hành sau này.

Phiên bản 1.0.0-beta02

Ngày 5 tháng 6 năm 2019

Phát hành androidx.media2:media2-common:1.0.0-beta02, androidx.media2:media2-player:1.0.0-beta02androidx.media2:media2-session:1.0.0-beta02. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Sửa lỗi

  • Đang đặt tốc độ phát lại âm bản trên androidx.media.player.MediaPlayer sẽ trả về câu lệnh RESULT_ERROR_BAD_VALUE.
  • Thay thế Guava ListenableFuture bằng hoạt động triển khai Jetpack (aosp/968828)

Phiên bản 1.0.0-beta01

Ngày 7 tháng 5 năm 2019

Phát hành androidx.media2:media2-common:1.0.0-beta01, androidx.media2:media2-player:1.0.0-beta01androidx.media2:media2-session:1.0.0-beta01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Các thư viện được phân tách thành 3 phần: media2-common, media2-player, media2-session
  • Thay đổi IllegalPointerException thành NullPointerException cho các đối số rỗng được đánh dấu là @NonNull.

Thay đổi về API

  • Giới thiệu MediaController.Builder
  • Thêm các phương thức setter cho các trường tuỳ chọn của FileMediaItem.Builder
  • MediaControllerMediaBrowser có thể gửi gợi ý kết nối của ứng dụng tới MediaSession, MediaSessionService hoặc MediaLibraryService
  • Một số phương pháp được đổi tên để tuân theo API Android 10 Media2

Phiên bản 1.0.0-alpha04

Ngày 17 tháng 12 năm 2018

Thay đổi về API

  • Đổi tên các lớp sau:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • Hợp nhất các lớp sau:
    • DataSourceDesc2MediaItem2 được kết hợp thành MediaItem
    • MediaPlaylistAgentMediaPlayerConnector được kết hợp thành SessionPlayer
  • Thêm các lớp con sau của Rating: HeartRating, PercentageRating, StarRatingThumbRating
  • Media2 hiện đang sử dụng ListenableFuture cho các phương thức không đồng bộ