Добавьте зависимость
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 дочерних элементов View, который содержит индикатор выполнения и кнопки управления воспроизведением. Обратите внимание, что 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 (только для воспроизведения аудио). Подробнее о том, как выбрать тип поверхности, рассказывается в статье о поверхностях.