透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Media2

與其他應用程式分享媒體內容和控制項。
最近更新時間 穩定版 候選版 測試版 Alpha 版
2022 年 2 月 9 日 1.2.1 - - -

宣告依附元件

如果要為 Media2 新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區

請在應用程式或模組的 build.gradle 檔案中,為您所需要的成品增添依附元件:

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

如欲進一步瞭解依附元件,請參閱新增建構依附元件一文。

意見回饋

您的意見回饋有助於改善 Jetpack。如果您發現新問題,或是對這個程式庫有改進建議,請告訴我們。欲提出新問題之前,請先查看此程式庫的現有問題。只需點選星號按鈕,即可就現有的問題進行票選。

新建問題

詳情請參閱 Issue Tracker 文件

1.2.1 版

1.2.1 版

2022 年 2 月 9 日

androidx.media2:media2-*:1.2.1 發佈。1.2.1 版含有以下修訂項目。

修正錯誤

  • 修正以 API 33 為目標時的自訂 Parcelable 檢查。

1.2.0 版

1.2.0 版

2021 年 9 月 15 日

androidx.media2:media2-*:1.2.0 發佈。1.2.0 版含有以下修訂項目。

自 1.1.0 版之後的重要異動

  • 能與 (prepare|play)From(MediaId|Uri|Search) AndroidX 媒體互通
  • 已在 MediaConstants 中新增 MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI

1.2.0-rc01 版

2021 年 9 月 1 日

androidx.media2:media2-*:1.2.0-rc01 發佈。1.2.0-rc01 版含有以下修訂項目。

修正錯誤

1.2.0-beta01 版

2021 年 6 月 30 日

androidx.media2:media2-*:1.2.0-beta01 發佈。1.2.0-beta01 版含有以下修訂項目。

新功能

  • 能與 (prepare|play)From(MediaId|Uri|Search) AndroidX 媒體互通

API 相關異動

  • 已將 MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI 加入 MediaConstants 中

1.2.0-alpha01 版

2021 年 4 月 21 日

androidx.media2:media2-*:1.2.0-alpha01 發佈。1.2.0-alpha01 版含有以下修訂項目。

API 相關異動

修正錯誤

  • 修正由於對區塊進行非必要同步處理所造成的死結問題
  • 無可播放的項目時能重設播放器
  • 允許 onCurrentMediaItemChanged 接受為空值的媒體項目
  • 目前的媒體項目有所改變時,能更新通知
  • 修正工作階段建立後立即與控制器相容的互通

1.1.3 版

1.1.3 版

2021 年 4 月 21 日

androidx.media2:media2-*:1.1.3 發佈。1.1.3 版含有以下修訂項目。

修正錯誤

  • 修正由於對區塊進行非必要同步處理所造成的死結問題

1.1.2 版

1.1.2 版

2021 年 1 月 27 日

androidx.media2:media2-*:1.1.2 發佈。1.1.2 版含有以下修訂項目。

修正錯誤

1.1.1 版

1.1.1 版

2020 年 12 月 16 日

androidx.media2:media2-*:1.1.1 發佈。1.1.1 版含有以下修訂項目。

修正錯誤

  • 目前的媒體項目有所改變時,能更新媒體通知。

1.1.0 版

1.1.0 版

2020 年 12 月 2 日

androidx.media2:media2-*:1.1.0 發佈。1.1.0 版含有以下修訂項目。

自 1.0.0 版起的重大異動

  • 新增處理媒體曲目之用的更多 API
  • 與 AndroidX 媒體庫的互通性更佳
    • 新增 MediaSession#setMediaUri
    • 經由 MediaSession#getSessionCompatToken() 公開 MediaSessionCompat.Token

1.1.0-rc01 版

2020 年 10 月 28 日

androidx.media2:media2-*:1.1.0-rc01 發佈。1.1.0-rc01 版含有以下修訂項目。

  • 已修正 MediaController 於含有鎖定時通知回呼,可能造成死結的問題 (I76c56)
  • 已修正 MediaSessionImplBase#isClosed() 在呼叫所釋出 MediaSessionCompat 上的 getCurrentControllerInfo() 時可能異常終止的問題(aosp/1423291)
  • 已修正 media2 MediaSession 未將有效佇列項目 ID 設為 PlaybackStateCompat 的問題 (aosp/1421652)
  • 已新增繫結至服務時的 BIND_INCLUDE_CAPABILITIES 旗標,如此一來,無頭媒體應用程式若有權限,即可存取該位置這對於 Android Auto 應用程式特別實用。(aosp/1440731)

1.1.0-beta01 版

2020 年 9 月 16 日

androidx.media2:media2-*:1.1.0-beta01 發佈。1.1.0-beta01 版含有以下修訂項目。

修正錯誤

  • 媒體項目有所更改時,可重設目前的位置
  • 連線時能傳送中繼資料和緩衝狀態
  • 修正在工作階段和控制器之間傳送大型資料時的異常終止問題
  • <queries> 新增至 Android 11 的 media 和 media2 資訊清單
  • 修正 MediaController.getPlaylist() 的 NPE
  • 不允許使用 seek 指令時停用 MediaControlView 的進度列
  • 工作階段目前的媒體項目有所更改時通知 PlaybackStateCompat
  • 修正 SessionPlayer.TrackInfo 的包裹處理

1.1.0-alpha01 版

2020 年 6 月 24 日

androidx.media2:media2-*:1.1.0-alpha01 發佈。1.1.0-alpha01 版含有以下修訂項目。

修正錯誤

  • 已修正更新中繼資料時的時間性問題 (I45567b/143999611)
  • SessionResult 能保住 MediaItem 不受 PlayerResult 影響 (I927b0b/154885520)
  • 已修正 MediaController#setVolumeTo() 會改變錯誤串流量的錯誤。(I76870b/151204736)

1.0.3 版

1.0.3 版

2020 年 2 月 19 日

androidx.media2:media2-*:1.0.3 發佈。1.0.3 版的 media2-{common,player,session} 含有以下修訂項目,1.0.3 版的 media2-widget 含有以下修訂項目

修正錯誤

  • 已修正以空值回呼建立 MediaController 時的 NullPointerException
  • 已修正 MediaPlayer.setMediaItem 之後未呼叫 onPlaylistChanged() 的問題

1.0.2 版

1.0.2 版

2020 年 2 月 5 日

androidx.media2:media2-*:1.0.2 發佈。1.0.2 版的 media2-{common,player,session} 含有以下修訂項目1.0.2 版的 media2-widget 含有以下修訂項目

修正錯誤

  • 已修正 MediaPlayer#getSelectedTrack() 中的 IndexOutOfBoundsException。(aosp/987003)
  • 已改善 ExoPlayer 呼叫 getDuration() 但媒體項目不存在時的處理方法 (aosp/987484)
  • 已修正在 IDLE 狀態下呼叫 getDuration() 時,ExoPlayer 不會擲出 IllegalStateException 的錯誤 (aosp/987246) 的錯誤
  • 不允許對 media2 使用自訂 Parcelable (aosp/1091056)
  • 已修正造成 close() 懸宕的問題 (aosp/1096455)
  • MediaBrowser:已改善使用 MediaBrowserService 時對 subscribe() 中錯誤的處理 (aosp/1158057)
  • 已修正使用 Framework MediaSession 時 MediaController 異常中斷的問題 (aosp/1177663)
  • 勿於進行連線時經由回呼通知工作階段資訊 (aosp/1195030b/142925848)
  • 已修正能從 MediaController 意外傳送多次 SessionResult 的問題 (aosp/1198634)
  • 已修正 MediaController 可能會傳送不允許傳送的指令至 MediaSession 的問題,因此現在 MediaSession 會傳送 RESULT_ERROR_PERMISSION_DENIED (aosp/1204183)
  • 已修正 MediaControllerView#setPlayer 一個不穩定的問題 (aosp/987004)

1.0.1 版

1.0.1 版

2019 年 10 月 9 日

androidx.media2:media2-*:1.0.1 發佈。1.0.1 版的 androidx.media2:media2-{player, session}:1.0.1 含有以下修訂項目1.0.1 版的 androidx.media2:media2-widget:1.0.1 含有以下修訂項目

修正錯誤

  • 已修正 MediaItem 的子類別在程序之中傳送的 RuntimeException 問題 (aosp/1098971)
  • 已修正在執行播放清單時 MediaPlayer 僅呼叫 onCurrentMediaItemChanged() 一次的問題
  • 已修正 MediaPlayer 可播放含有超過 2 個項目之播放清單的問題 (aosp/1108440)
  • 已修正即使無法看見 SurfaceView,播放器仍在其上播放的問題。
  • 已修正在 setPlayer 之前呼叫 setViewType 時所發生的 VideoView 播放問題

1.0.0 版

2019 年 9 月 5 日

androidx.media2:media2-*:1.0.0 發佈。以下修訂項目包含在 media2-{player, session}:1.0.0;以下修訂項目包含在 media2-widget:1.0.0

Media2 1.0.0 的主要功能

Media2 是下列 Media API 的新一代:MediaSessionMediaControllerMediaBrowserMediaBrowserServiceVideoViewMediaControlView

  • media2.player.MediaPlayer
    • 這些 API 多半與 android.media.MediaPlayer 相符,同時基礎引擎為 ExoPlayer
    • 內建音訊焦點和雜訊處理功能
    • 其實作 SessionPlayer
  • media2.session.MediaSession
    • 提供精細的權限控管機制
    • 支援自訂版面配置
    • 可輕鬆搭配 SessionPlayer 使用,例如 androidx.media2.player.MediaPlayer
    • 能與 MediaControllerCompat 互通
  • media2.session.MediaSessionService
    • 為輕量版 MediaLibraryService
    • 能為背景播放提供服務生命週期管理
    • 能與 MediaControllerCompatMediaBrowserServiceCompat 互通
  • media2.session.MediaLibraryService
    • 能為瀏覽媒體項目或是含有大量項目的搜尋結果提供更佳的分頁功能
    • 能與 MediaControllerCompatMediaBrowserServiceCompat 互通
  • media2.session.MediaController
    • 可連結 MediaSessionMediaSessionServiceMediaLibraryService
    • 能與 MediaSessionCompatMediaBrowserServiceCompat 互通
  • media2.session.MediaBrowser
    • 其沿用 MediaController
    • 可連結 MediaSessionMediaSessionServiceMediaLibraryService
    • 能與 MediaSessionCompatMediaBrowserServiceCompat 互通
  • media2.widget.VideoView
    • 含有 android.widget.VideoView 的全部功能
    • 提供 TextureViewSurfaceView 切換的功能
    • 能與 MediaSession 搭配使用
  • media2.widget.MediaControlView
    • 外觀和操控感更佳
    • 含有 android.widget.MediaController 的全部功能
    • 提供字幕音軌選擇、播放速度選擇和全螢幕模式

1.0.0-rc02 版

2019 年 8 月 22 日

androidx.media2:media2-*:1.0.0-rc02 發佈。在這個版本所做的異動可參閱此處。此版本包含 androidx.media2:media2-widget:1.0.0-rc02;在這個版本所做的異動可參閱此處

新功能

  • MediaControlView 隸屬於 VideoView 時,即無法透過 MediaControlView (MCV) 呼叫 setPlayersetController

修正錯誤

  • MediaControlView:下一個和上一個按鈕限定在有下一個或上一個媒體項目時方能點擊
  • MediaControlView:已修正呼叫 onAttachedToWindow()NullPointerException 不穩定的問題
  • 目前的媒體項目有所改變時,Media2 Widget 現在已能正確地處理新媒體項目的中繼資料

Media2-Widget 1.0.0-beta01 版

2019 年 7 月 2 日

androidx.media2:media2-widget:1.0.0-beta01 發佈。若要參閱此版本所包含的修訂項目,請按這裡

新功能

  • 背景播放:不需要在 VideoView 中製作播放器,VideoView 可以採用 SessionPlayer 或 MediaController,讓應用程式更流暢地進入背景播放模式。
  • 已去除與 media2-player 程式庫的依存性
  • 已新增 onViewTypeChangedListener

API 相關異動

  • 瀏覽權限從公開變更為受保護:
    • VideoView.onMeasure(int, int)
    • VideoView.onAttachedToWindow()
    • VideoView.onDetachedFromWindow()
    • MediaControlView.onMeasure(int, int)
  • 已移除:
    • VideoView.getSessionToken()
    • VideoView.setAudioAttributes(AudioAttributesCompat)
    • VideoView.setMedaItem(MediaItem)
    • MediaControlView.setSessionToken(SessionToken)
  • 已新增:
    • VideoView.setMediaController(MediaController)
    • VideoView.getMediaControlView()
    • VideoView.setMediaController(MediaController)
    • VideoView.setPlayer(SessionPlayer)
    • VideoView.setOnViewTypeChangedListener()
    • MediaControlView.setPlayer(SessionPlayer)
    • MediaControlView.setMediaController(MediaContoller)

1.0.0-rc01 版

2019 年 6 月 18 日

androidx.media2:media2-common:1.0.0-rc01androidx.media2:media2-player:1.0.0-rc01androidx.media2:media2-session:1.0.0-rc01 發佈。若要參閱此版本所包含的修訂項目,請按這裡

API 相關異動

  • ListenableFuture 的依附元件已遷移回 Guava 的獨立實作模式。

  • 請注意,如果您指定的測試目標必須仰賴完整的 Guava 成品,則若使用特定版本的 Android Gradle 外掛程式時,在依存元件的解析上可能會發生衝突。如果遇到與 ListenableFuture 相關的 Could not resolve all artifacts 錯誤,可在專案的建構設定中加入 android.dependency.useConstraints=false,以暫時解決問題。我們正在研擬 Android Gradle 外掛程式內的永久修正內容,不久將可發佈。

1.0.0-beta02 版

2019 年 6 月 5 日

androidx.media2:media2-common:1.0.0-beta02androidx.media2:media2-player:1.0.0-beta02androidx.media2:media2-session:1.0.0-beta02 發佈。若要參閱此版本所包含的修訂項目,請按這裡

修正錯誤

  • 在 androidx.media.player.MediaPlayer 上設定負值的播放速度,可傳回 RESULT_ERROR_BAD_VALUE。
  • Guava ListenableFuture 取代為實作 Jetpack (aosp/968828)

1.0.0-beta01 版

2019 年 5 月 7 日

androidx.media2:media2-common:1.0.0-beta01androidx.media2:media2-player:1.0.0-beta01androidx.media2:media2-session:1.0.0-beta01 發佈。若要參閱此版本所包含的修訂項目,請按這裡

新功能

  • 程式庫分為 3 部分:media2-common、media2-player 及 media2-session
  • 針對標示為 @NonNull 的空值引數,已將 IllegalPointerException 改為 NullPointerException

API 相關異動

  • MediaController.Builder 導入
  • 已為 FileMediaItem.Builder 的選填欄位新增 setter 方法
  • MediaControllerMediaBrowser 可傳送應用程式的連結提示到 MediaSessionMediaSessionServiceMediaLibraryService
  • 部分方法經過重新命名,以便依循 Android 10 Media2 的 API

1.0.0-alpha04 版

2018 年 12 月 17 日

API 相關異動

  • 以下類別已重新命名:
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • 以下類別已合併:
    • 已將 DataSourceDesc2MediaItem2 合併為 MediaItem
    • 已將 MediaPlaylistAgentMediaPlayerConnector 合併為 SessionPlayer
  • 已新增下列 Rating 的子類別:HeartRatingPercentageRatingStarRatingThumbRating
  • Media2 現在會針對非同步方法使用 ListenableFuture