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