添加依赖项
Kotlin
implementation("androidx.media3:media3-ui:1.10.0")
Groovy
implementation "androidx.media3:media3-ui:1.10.0"
PlayerView
最重要的组件是 PlayerView,它是用于媒体播放的视图。
PlayerView 在播放期间显示视频、图片、字幕和专辑封面,以及播放控件。
PlayerView 具有 setPlayer() 方法,用于附加和分离(通过
传递 null)Player 实例。
PlayerView 可用于视频、图片和音频播放。在视频播放时,它会呈现视频和字幕;在图片播放时,它会呈现位图;并且可以显示音频文件中作为元数据包含的专辑封面。您可以像其他任何界面组件一样将其包含在布局文件中。例如,可以使用以下 XML 包含 PlayerView:
<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 方法。
为了获得更舒适的用户体验,如果您使用的是 ExoPlayer,请考虑添加 keepScreenOn
Android 属性或 设置唤醒锁定。您
可以在后台工作
页面中调查其他使设备保持唤醒状态的操作。
android:keepScreenOn="true"
在布局文件中声明视图后,可以在 activity 的 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(仅用于音频播放)。如需详细了解要选择哪种平台类型,请参阅平台页面。