ExoVideoView
ExoVideoView — это видеопроигрыватель, разработанный на основе ExoPlayer.
Что умеет ExoVideoView:
Самый простой способ — добавить зависимость Gradle. Убедитесь, что в файле build.gradle проекта добавлены JCenter и google().
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Затем добавьте следующий код в свой проект:
implementation 'com.github.JarvanMo:ExoVideoView:2.1.6'
Используйте ExoVideoView в XML:
<com.jarvanmo.exoplayerview.ui.ExoVideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="300dp"/>
ExoVideoView предоставляет встроенный Player:
SimpleMediaSource mediaSource = new SimpleMediaSource(url);//Также поддерживает uri
videoView.play(mediaSource);
videoView.play(mediaSource,where);//Воспроизведение с определённой позиции
Также можно использовать собственный Player:
videoView.setPlayer(player);
Примечание: не забудьте освободить ExoPlayer:
videoView.releasePlayer();
Подробности см. в demo().
ExoVideoView может автоматически обрабатывать проблемы с направлением при условии, что вы установили для ExoVideoView OrientationListener:
videoView.setOrientationListener(orientation -> {
if (orientation == SENSOR_PORTRAIT) {
//do something
} else if (orientation == SENSOR_LANDSCAPE) {
//do something
}
});
Примечание. Когда ExoVideoView автоматически обрабатывает проблемы с направлением, если контекст в Controller является Activity, система вызовет:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)
или activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
То же самое относится к полноэкранным событиям.
Во-первых, переопределите onKeyDown:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return videoView.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
Установите прослушиватель для ExoVideoView:
videoView.setBackListener((view, isPortrait) -> {
if (isPortrait) {
//do something
}
return false;
});
Если возвращаемое значение равно true
, последующие действия системы будут прерваны. В противном случае ExoVideoView будет автоматически обрабатывать направление и вызывать OrientationLister.onOrientationChange()
.
ExoVideoView имеет встроенный селектор разрешения. Если вы включите несколько разрешений и добавите несколько разрешений, встроенный селектор разрешений будет добавлен в overlayFrameLayout
.
List<ExoMediaSource.Quality> qualities = new ArrayList<>();
ExoMediaSource.Quality quality =new SimpleQuality(quality,mediaSource.url());
qualities.add(quality);
mediaSource.setQualities(qualities);
ExoVideoPlaybackController
делится на четыре части:
1. Top
2. Top Landscape
3. Bottom
4. Bottom Landscape
Каждый раздел можно отобразить или скрыть:
app:controller_display_mode="all|none|top|top_landscape|bottom|bottom_landscape"
В Java:
videoView.setControllerDisplayMode(mode);
ExoVideoPlaybackController
позволяет добавлять элементы управления в коде Java.
videoView.addCustomView(ExoVideoPlaybackControlView.CUSTOM_VIEW_TOP, view);
videoView.addCustomView(ExoVideoPlaybackControlView.CUSTOM_VIEW_TOP_LANDSCAPE, view);
videoView.addCustomView(ExoVideoPlaybackControlView.CUSTOM_VIEW_BOTTOM_LANDSCAPE, view);
exo_video_playback_control_view.xml
можно настроить. Некоторые свойства определены в ExoVideoPlaybackControlView
. Подробности см. в исходном коде.
app:controller_layout_id="@layout/my_controller"
Иногда мы можем не захотеть возвращаться, поэтому давайте спрячем его:
videoView.changeWidgetVisibility(R.id.exo_player_controller_back,View.INVISIBLE);
Дополнительные скрытые элементы управления см. в ids_in_controller;
Обратите внимание: это может быть довольно опасно, и я не могу гарантировать эффект после скрытия.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )