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

Добавить зависимость

Котлин

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

Круто

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

PlayerПросмотр

Самым важным компонентом является 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 действия:

Котлин

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}

Ява

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

После инициализации проигрывателя его можно прикрепить к представлению, вызвав setPlayer :

Котлин

// 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()

Ява

// 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 (только для воспроизведения аудио). Более подробную информацию о том, какой тип поверхности выбрать, можно найти на странице Surface .