依存関係を追加する
Media3 ライブラリには、Jetpack Compose ベースの UI モジュールが 2 つ含まれています。Material3 のものはコアのものに依存しているため、両方を追加する必要はありません。
Kotlin
// Include only one of the following dependencies
implementation("androidx.media3:media3-ui-compose:1.11.1")
implementation("androidx.media3:media3-ui-compose-material3:1.11.1")
Groovy
// Include only one of the following dependencies
implementation "androidx.media3:media3-ui-compose:1.11.1"
implementation "androidx.media3:media3-ui-compose-material3:1.11.1"
Compose ファーストでアプリを開発するか、ビューの使用から移行することを強くおすすめします。
完全な Compose デモアプリ
media3-ui-compose ライブラリには、すぐに使えるコンポーザブル(ボタン、インジケーター、画像、ダイアログなど)は含まれていませんが、PlayerView を AndroidView でラップするなどの相互運用ソリューションを回避する、完全に Compose で記述されたデモアプリがあります。デモアプリでは、media3-ui-compose モジュールと Compose Material3 ライブラリの UI 状態ホルダー クラスを使用します。
必要なライブラリ
必要なカスタマイズのレベルに応じて、2 つの Media3 Compose ライブラリから選択できます。この違いを理解するには、UI 状態生成パイプライン(Business logic → UI logic → UI)について考えるとわかりやすいでしょう。
media3-ui-compose を使用して、UI コンポーネントを完全に制御する。
このライブラリは Business logic → UI logic 接続を提供します。PlayerSurface や ContentFrame などの基本的なコンポーネントと、Player 状態を UI 状態に変換する状態ホルダー クラス(PlayPauseButtonState、CurrentMediaItemState、PlaylistState、ErrorState など)が含まれています。
このライブラリは、すぐに使用できるマテリアル デザイン コンポーネントを提供するものではありません。独自の UI コンポーネントを構築し、スタイルを設定する必要があります。ルック アンド フィールを最大限に制御できるため、高度にカスタマイズされたデザイン システムがある場合に最適です。
media3-ui-compose-material3 を使用して、マテリアル デザインとの統合を高速化します。
このライブラリは、パイプラインの最後の UI 部分を提供します。media3-ui-compose に依存し、Material3 コンポーネントでスタイル設定された、事前構築済みのコンポーズ可能な関数(Player や MiniController のコンポーザブルなど)が含まれています。Player コンポーザブルは、動画、コントロール、進行状況バーを備えた包括的なメディア再生エクスペリエンスを提供します。これは、PlayerDefaults を使用してさらにカスタマイズできます。MiniController コンポーザブルは、現在のメディア アイテムに関する情報を表示しながら、プレーヤーを制御するためのコンパクトなアフォーダンスを提供します。独自のボタンやその他の UI 要素をゼロから作成する必要がなくなります。これらのコンポーネントのテーマ、色、アイコンはカスタマイズできますが、コア実装は提供されています。
概要
| 機能 | media3-ui-compose |
media3-ui-compose-material3 |
|---|---|---|
| UI コンポーネント | PlayerSurface や ContentFrame などの基本要素。ただし、スタイル設定済みのボタンやコントロールはありません。 |
Player コンポーザブルと MiniController コンポーザブル、および PlayPauseButton、SeekBackButton、PositionAndDurationText、ErrorText などの事前ビルドされた Material3 スタイルのコンポーザブルの完全なセットを提供します。 |
| 状態管理 | ロジックを管理する remember...State ホルダーを提供します。 |
状態を内部で管理しますが、必要に応じて状態ホルダーにアクセスすることもできます。 |
| 依存関係 | androidx.compose.foundation |
media3-ui-compose、androidx.compose.material3、com.google.android.material |
| 主なユースケース | カスタム デザイン システムを使用したプレーヤー UI の構築。デザインを完全に制御できます。 | マテリアル デザイン 3 のガイドラインに沿ったプレーヤー UI を迅速に構築する。 |