Media2

メディアのコンテンツとコントロールを他のアプリと共有します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
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 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

バージョン 1.3.0-beta01

2023 年 11 月 29 日

androidx.media2:media2-*:1.3.0-beta01 がリリースされました。Media2 1.3.0-alpha01 からの変更はありません。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください

バージョン 1.3.0-alpha01

2023 年 11 月 15 日

androidx.media2:media2-*:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください

API の変更

  • androidx.media2 のサポートは完全に終了しました。代わりに androidx.media3 を使用してください。(I53164

バージョン 1.2.1

バージョン 1.2.1

2022 年 2 月 9 日

androidx.media2:media2-*:1.2.1 がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください

バグの修正

  • API 33 をターゲットとする場合のカスタム Parcelable のチェックを修正しました。

バージョン 1.2.0

バージョン 1.2.0

2021 年 9 月 15 日

androidx.media2:media2-*:1.2.0 がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください

1.1.0 以降の重要な変更

  • (prepare|play)From(MediaId|Uri|Search) の AndroidX メディアとの相互運用性をサポートします
  • MediaConstantsMEDIA_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 に含まれる commit については、こちらをご覧ください

バグの修正

  • メディア通知を閉じる際の ANR を修正しました(Ifdcc2b/148011394

バージョン 1.2.0-beta01

2021 年 6 月 30 日

androidx.media2:media2-*:1.2.0-beta01 がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください

新機能

  • (prepare|play)From(MediaId|Uri|Search) の AndroidX メディアとの相互運用性をサポートします

API の変更

  • MediaConstants に MEDIA_URI_PATH_SET_MEDIA_URIMEDIA_URI_QUERY_URI を追加しました

バージョン 1.2.0-alpha01

2021 年 4 月 21 日

androidx.media2:media2-*:1.2.0-alpha01 がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください

API の変更

  • (prepare|play)From(MediaId|Uri|Search) のサポートを追加しました(I13475b/176949057

バグの修正

  • 不必要な同期ブロックに起因するデッドロックの問題を修正しました
  • 再生可能なアイテムがない場合にプレーヤーがリセットされるようになりました
  • null のメディア アイテムを onCurrentMediaItemChanged が取得できるようになりました
  • 現在のメディア アイテムが変更されたときに、通知が更新されるようになりました
  • セッション作成後のコントローラの compat right との相互運用性を修正しました

バージョン 1.1.3

バージョン 1.1.3

2021 年 4 月 21 日

androidx.media2:media2-*:1.1.3 がリリースされました。バージョン 1.1.3 に含まれる commit については、こちらをご覧ください

バグの修正

  • 不必要な同期ブロックに起因するデッドロックの問題を修正しました

バージョン 1.1.2

バージョン 1.1.2

2021 年 1 月 27 日

androidx.media2:media2-*:1.1.2 がリリースされました。バージョン 1.1.2 に含まれる commit については、こちらをご覧ください

バグの修正

バージョン 1.1.1

バージョン 1.1.1

2020 年 12 月 16 日

androidx.media2:media2-*:1.1.1 がリリースされました。バージョン 1.1.1 に含まれる commit については、こちらをご覧ください

バグの修正

  • 現在のメディア アイテムが変更されたときに、メディア通知が更新されるようになりました。

バージョン 1.1.0

バージョン 1.1.0

2020 年 12 月 2 日

androidx.media2:media2-*:1.1.0 がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

  • MediaController がロックを保持中にコールバックを通知し、それによってデッドロックが発生する可能性がある問題を修正しました。(I76c56
  • リリースされた MediaSessionCompatgetCurrentControllerInfo() を呼び出すと MediaSessionImplBase#isClosed() がクラッシュすることがある問題を修正しました。(aosp/1423291
  • media2 の MediaSessionPlaybackStateCompat にアクティブ キュー アイテム ID を設定しなかった問題を修正しました。(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 に含まれる commit については、こちらをご覧ください

バグの修正

  • メディア アイテムが変更されたときに現在の位置をリセット
  • 接続時にメタデータとバッファリング状態を送信
  • セッションとコントローラの間で大規模なデータを送信するときのクラッシュを修正
  • <queries> を media と media2(Android 11 の場合)のマニフェストに追加
  • 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 に含まれる commit については、こちらをご覧ください

バグの修正

  • メタデータ更新時のタイミングの問題を修正(I45567b/143999611
  • SessionResult には PlayerResult からの MediaItem が保持されます(I927b0b/154885520
  • MediaController#setVolumeTo() がストリームの音量を間違えて変更するバグを修正しました(I76870b/151204736

バージョン 1.0.3

バージョン 1.0.3

2020 年 2 月 19 日

androidx.media2:media2-*:1.0.3 がリリースされました。media2-{common,player,session} バージョン 1.0.3 に含まれる commit と、media2-widget バージョン 1.0.3 に含まれるcommit があります。

バグの修正

  • null コールバックで MediaController を作成するときの NullPointerException を修正
  • MediaPlayer.setMediaItem の後に onPlaylistChanged() が呼び出されなかった問題を修正

バージョン 1.0.2

バージョン 1.0.2

2020 年 2 月 5 日

androidx.media2:media2-*:1.0.2 がリリースされました。media2-{common,player,session} バージョン 1.0.2 に含まれる commit と、media2-widget バージョン 1.0.2 に含まれる commit があります。

バグの修正

  • MediaPlayer#getSelectedTrack()IndexOutOfBoundsException を修正しました。(aosp/987003
  • ExoPlayer が getDuration() を呼び出し、メディア アイテムが存在しない場合の処理を改善(aosp/987484
  • getDuration()IDLE 状態で呼び出されたときに 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 がリリースされました。androidx.media2:media2-{player, session}:1.0.1 バージョン 1.0.1 に含まれる commit と、androidx.media2:media2-widget:1.0.1 バージョン 1.0.1 に含まれる commitがあります。

バグの修正

  • MediaItem のサブクラスがプロセス全体に送信された場合の RuntimeException を修正(aosp/1098971
  • MediaPlayer がプレイリストの再生時に onCurrentMediaItemChanged() を 1 回だけ呼び出す問題を修正
  • MediaPlayer で 3 つ以上のアイテムを含むプレイリストを再生できる問題を修正(aosp/1108440
  • プレーヤーが非表示であっても SurfaceView で再生し続ける問題を修正
  • setPlayer の前に setViewType を呼び出したときに発生する VideoView の再生問題を修正

バージョン 1.0.0

2019 年 9 月 5 日

androidx.media2:media2-*:1.0.0 がリリースされました。media2-{player, session}:1.0.0 に含まれる commit と、media2-widget:1.0.0 に含まれる commit があります。

Media2 1.0.0 の主な機能

Media2 は、Media API(MediaSessionMediaControllerMediaBrowserMediaBrowserServiceVideoViewMediaControlView)の次世代の API です。

  • media2.player.MediaPlayer
    • android.media.MediaPlayer とほぼ一致する API 群。基礎となるエンジンは 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 が含まれています。このバージョンに含まれる変更については、こちらをご覧ください。

新機能

  • MediaControlViewVideoView に含まれる場合、MediaControlView(MCV)を介して setPlayer または setController を呼び出すことはできなくなりました

バグの修正

  • MediaControlView: 次へボタンまたは戻るボタンは、次または前のメディア アイテムがある場合にのみクリック可能になりました
  • MediaControlView: onAttachedToWindow() が呼び出されたときの NullPointerException が不安定な問題を修正しました
  • 現在のメディア アイテムが変更されたときに、Media2 ウィジェットが新しいメディア アイテムのメタデータを適切に処理するようになりました

Media2-Widget バージョン 1.0.0-beta01

2019 年 7 月 2 日

androidx.media2:media2-widget:1.0.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • バックグラウンド再生: 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 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • ListenableFuture への依存関係は、元のように Guava のスタンドアロン実装に移行されました。

  • 完全な Guava アーティファクトに依存するテスト ターゲットがある場合、Android Gradle プラグインの特定のバージョンを使用すると、依存関係の解決の競合が発生する可能性があります。ListenableFuture に関連する「Could not resolve all artifacts」エラーが発生する場合、プロジェクトのビルド構成に android.dependency.useConstraints=false を追加することで、一時的に問題を回避できます。現在 Google は、後日リリースすることを期して 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 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 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 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • ライブラリが 3 つの部分(media2-common、media2-player、media2-session)に分けられました
  • @NonNull としてマークされた null 引数の IllegalPointerExceptionNullPointerException に変更しました。

API の変更

  • MediaController.Builder を導入しました
  • FileMediaItem.Builder のオプション フィールドにセッター メソッドを追加しました
  • MediaControllerMediaBrowser が、アプリの接続ヒントを MediaSessionMediaSessionService、または MediaLibraryService に送信できるようになりました
  • 一部のメソッドの名前を Android 10 Media2 API に合わせて変更しました

バージョン 1.0.0-alpha04

2018 年 12 月 17 日

API の変更

  • 次のクラスの名前を変更しました。
    • MediaPlayer2MediaPlayer
    • MediaSession2MediaSession
    • MediaController2MediaController
    • MediaSessionService2MediaSessionService
    • MediaLibraryService2MediaLibraryService
    • MediaBrowser2MediaBrowser
    • MediaMetadata2MediaMetadata
    • Rating2Rating
    • SessionToken2SessionToken
    • SessionCommand2SessionCommand
    • SessionCommandGroup2SessionCommandGroup
  • 次のクラスをマージしました。
    • DataSourceDesc2MediaItem2MediaItem に統合されました
    • MediaPlaylistAgentMediaPlayerConnectorSessionPlayer に統合されました
  • Rating のサブクラス(HeartRatingPercentageRatingStarRatingThumbRating)を追加しました
  • Media2 は非同期メソッドに ListenableFuture を使用するようになりました