Начало работы с интерфейсом на основе представлений

Как добавить зависимость

Kotlin

implementation("androidx.media3:media3-ui:1.11.1")

Яркий

implementation "androidx.media3:media3-ui:1.11.1"

PlayerView

Самый важный компонент – PlayerView, представление для воспроизведения медиаконтента. PlayerView показывает видео, изображения, субтитры и обложку альбома во время воспроизведения, а также элементы управления воспроизведением.

PlayerView имеет метод setPlayer() для присоединения и отсоединения (путем передачи null) экземпляров Player.

PlayerView можно использовать для воспроизведения видео, изображений и аудио. Он воспроизводит видео и субтитры, если они есть, растровые изображения и может показывать обложки, добавленные в качестве метаданных в аудиофайлы. Его можно добавить в файлы макета так же, как и любой другой компонент интерфейса. Например, атрибут 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 содержит несколько атрибутов. Эти атрибуты можно использовать, чтобы настроить поведение представления, а также его внешний вид. У большинства этих атрибутов есть соответствующие методы установки, которые можно использовать для настройки представления во время выполнения. В PlayerViewдокументации приведены подробные сведения об этих атрибутах и методах установки.

Чтобы пользователям было удобнее, добавьте атрибут keepScreenOn для Android или настройте блокировку пробуждения, если вы используете ExoPlayer. Вы можете изучить другие действия, которые не позволяют устройству перейти в спящий режим, на страницах фоновых задач.

android:keepScreenOn="true"

После того как представление будет объявлено в файле макета, его можно будет найти в методе onCreate объекта activity:

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.

Выберите тип платформы

Атрибут surface_type объекта PlayerView позволяет задать тип поверхности, используемой для воспроизведения видео. Допустимые значения: surface_view, texture_view, spherical_gl_surface_view (специальное значение для воспроизведения сферического видео), video_decoder_gl_surface_view (для отрисовки видео с помощью внешних средств отрисовки) и none (только для воспроизведения аудио). Подробнее о том, какой тип поверхности выбрать, можно узнать на странице "Поверхности".