Media2
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 1 月 10 日 | 1.3.0 | - | - | - |
宣告依附元件
如要為 Media2 新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區。
在應用程式或模組的 build.gradle
檔案中,新增您需要的構件依附元件:
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") }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.3 版本
1.3.0 版本
2024 年 1 月 10 日
發布 androidx.media2:media2-*:1.3.0
。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要異動
- androidx.media2 現已完全淘汰。請改用 androidx.media3。
1.3.0-rc01 版本
2023 年 12 月 13 日
發布了 androidx.media2:media2-*:1.3.0-rc01
,但與 Media2 1.3.0-beta01 版本無任何變更。查看 1.3.0-rc01 版的修訂項。
1.3.0-beta01 版本
2023 年 11 月 29 日
發布 androidx.media2:media2-*:1.3.0-beta01
,且自 Media2 1.3.0-alpha01
以來皆無異動。1.3.0-beta01 版本包含以下修訂項目。
1.3.0-alpha01 版本
2023 年 11 月 15 日
發布 androidx.media2:media2-*:1.3.0-alpha01
。查看 1.3.0-alpha01 版的修訂項目。
API 變更
androidx.media2
現已完全淘汰。請改用androidx.media3
。(I53164)
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_URI
和MEDIA_URI_QUERY_URI
1.2.0-rc01 版本
2021 年 9 月 1 日
發布 androidx.media2:media2-*:1.2.0-rc01
。查看 1.2.0-rc01 版的修訂項目。
修正錯誤
- 修正關閉媒體通知時的 ANR (Ifdcc2,b/148011394)
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_URI
和MEDIA_URI_QUERY_URI
加入 MediaConstants 中
1.2.0-alpha01 版本
2021 年 4 月 21 日
發布 androidx.media2:media2-*:1.2.0-alpha01
。查看 1.2.0-alpha01 版的修訂項。
API 變更
- 新增對 (prepare|play)From(MediaId|Uri|Search) 的支援 (I13475,b/176949057)
修正錯誤
- 修正由於對區塊進行非必要同步處理所造成的死結問題
- 無可播放的項目時能重設播放器
- 允許 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 版包含以下修訂項目。
修正錯誤
- 已修正 VersionedParcelable 發出的 NPE (I1ec28,b/177060207)
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 版包含以下修訂項目。
修正錯誤
- 修正更新中繼資料時的時間性問題 (I45567,b/143999611)
- SessionResult 能保住 MediaItem 不受 PlayerResult 影響 (I927b0,b/154885520)
- 修正
MediaController#setVolumeTo()
可能會改變錯誤串流音量的問題。(I76870、b/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/1195030、b/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 的新一代:MediaSession
、MediaController
、MediaBrowser
、MediaBrowserService
、VideoView
和 MediaControlView
。
media2.player.MediaPlayer
- 這些 API 多半與
android.media.MediaPlayer
相符,同時基礎引擎為 ExoPlayer - 內建音訊焦點和雜訊處理功能
- 實作 SessionPlayer
- 這些 API 多半與
media2.session.MediaSession
- 提供精細的權限控管機制
- 支援自訂版面配置
- 可輕鬆搭配 SessionPlayer 使用,例如
androidx.media2.player.MediaPlayer
- 能與
MediaControllerCompat
互通
media2.session.MediaSessionService
- 為輕量版
MediaLibraryService
- 能為背景播放提供服務生命週期管理
- 能與
MediaControllerCompat
和MediaBrowserServiceCompat
互通
- 為輕量版
media2.session.MediaLibraryService
- 能為瀏覽媒體項目或是含有大量項目的搜尋結果提供更佳的分頁功能
- 能與
MediaControllerCompat
和MediaBrowserServiceCompat
互通
media2.session.MediaController
- 可連結
MediaSession
、MediaSessionService
和MediaLibraryService
- 能與
MediaSessionCompat
和MediaBrowserServiceCompat
互通
- 可連結
media2.session.MediaBrowser
- 沿用
MediaController
- 可連結
MediaSession
、MediaSessionService
和MediaLibraryService
- 能與
MediaSessionCompat
和MediaBrowserServiceCompat
互通
- 沿用
media2.widget.VideoView
- 含有
android.widget.VideoView
的全部功能 - 提供
TextureView
與SurfaceView
切換的功能 - 能與
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) 呼叫setPlayer
或setController
修正錯誤
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-rc01
、androidx.media2:media2-player:1.0.0-rc01
和 androidx.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-beta02
、androidx.media2:media2-player:1.0.0-beta02
和 androidx.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-beta01
、androidx.media2:media2-player:1.0.0-beta01
和 androidx.media2:media2-session:1.0.0-beta01
。您可以前往這裡查看這個版本包含的修訂項目。
新功能
- 程式庫分為 3 部分:media2-common、media2-player 及 media2-session
- 針對標示為 @NonNull 的空值引數,已將
IllegalPointerException
改為NullPointerException
。
API 變更
- 推出了
MediaController.Builder
- 已為
FileMediaItem.Builder
的選填欄位新增 setter 方法 MediaController
和MediaBrowser
可傳送應用程式的連結提示到MediaSession
、MediaSessionService
或MediaLibraryService
- 部分方法經過重新命名,以便依循 Android 10 Media2 的 API
1.0.0-alpha04 版本
2018 年 12 月 17 日
API 變更
- 以下類別已重新命名:
MediaPlayer2
→MediaPlayer
MediaSession2
→MediaSession
MediaController2
→MediaController
MediaSessionService2
→MediaSessionService
MediaLibraryService2
→MediaLibraryService
MediaBrowser2
→MediaBrowser
MediaMetadata2
→MediaMetadata
Rating2
→Rating
SessionToken2
→SessionToken
SessionCommand2
→SessionCommand
SessionCommandGroup2
→SessionCommandGroup
- 以下類別已合併:
- 已將
DataSourceDesc2
與MediaItem2
合併為MediaItem
- 已將
MediaPlaylistAgent
與MediaPlayerConnector
合併為SessionPlayer
- 已將
- 新增下列
Rating
的子類別:HeartRating
、PercentageRating
、StarRating
和ThumbRating
Media2
現在會針對非同步方法使用ListenableFuture