Добавить зависимость
Котлин
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 .