新增依附元件
Kotlin
implementation("androidx.media3:media3-ui:1.11.1")
Groovy
implementation "androidx.media3:media3-ui:1.11.1"
PlayerView
最重要的元件是 PlayerView,這是用於媒體播放的檢視畫面。PlayerView 會在播放期間顯示影片、圖片、字幕和專輯封面,以及播放控制項。
PlayerView 具有 setPlayer() 方法,可用於附加和卸離 (透過傳遞 null) Player 執行個體。
PlayerView 可用於播放影片、圖片和音訊。在播放影片時,它會轉譯影片和字幕;在播放圖片時,它會轉譯點陣圖;在播放音訊檔案時,它會顯示音訊檔案中繼資料內含的圖片。您可以像其他 UI 元件一樣,將其加入版面配置檔案中。例如,PlayerView 可包含下列 XML:
<androidx.media3.ui.PlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:show_buffering="when_playing"
app:show_shuffle_button="true"/>
上述程式碼片段說明 PlayerView 提供多個屬性。這些屬性可用來自訂檢視畫面的行為,以及外觀和風格。這些屬性大多有對應的 setter 方法,可用於在執行階段自訂檢視畫面。PlayerView 說明文件會更詳細地列出這些屬性和 setter 方法。
如要提供更舒適的使用者體驗,建議您新增 keepScreenOn Android 屬性,或設定 Wake Lock (如果您使用 ExoPlayer)。您可以在背景工作頁面中,調查讓裝置保持喚醒狀態的其他動作。
android:keepScreenOn="true"
在版面配置檔案中宣告檢視畫面後,即可在活動的 onCreate 方法中查詢:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView = findViewById(R.id.player_view) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView = findViewById(R.id.player_view); }
播放器初始化後,可以呼叫 setPlayer,將播放器附加至檢視畫面:
Kotlin
// Instantiate the player. val player = ExoPlayer.Builder(context).build() // Attach player to the view. playerView.player = player // Set the media item to be played. player.setMediaItem(mediaItem) // Prepare the player. player.prepare()
Java
// Instantiate the player. player = new ExoPlayer.Builder(context).build(); // Attach player to the view. playerView.setPlayer(player); // Set the media item to be played. player.setMediaItem(mediaItem); // Prepare the player. player.prepare();
PlayerControlView
PlayerControlView 是 PlayerView 個子檢視畫面之一,其中包含進度列和控制播放的按鈕。請注意,PlayerControlView 不適合做為 PlayerView 以外的獨立元件使用。您可以透過在 PlayerView 上設定屬性 (會傳遞至 PlayerControlView) 或提供 android:id="@id/exo_controller 的自訂控制器,來自訂這個屬性。
選擇表面類型
PlayerView 的 surface_type 屬性可讓您設定用於影片播放的介面類型。允許的值為 surface_view、texture_view、spherical_gl_surface_view (球形影片播放的特殊值)、video_decoder_gl_surface_view (使用擴充功能轉譯器轉譯影片) 和 none (僅限音訊播放)。如要進一步瞭解如何選擇介面類型,請參閱「介面」頁面。