1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jarvanmo-ExoPlayerVideoView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 6.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 01:36 f9013ea

ExoVideoView

ExoVideoView — это видеопроигрыватель, разработанный на основе ExoPlayer.

Что умеет ExoVideoView:

  1. Автоматически обрабатывать аудиофокус.
  2. Автоматически обрабатывать направление в соответствии с показаниями датчиков.
  3. Поддерживать жесты.
  4. Поддерживать выбор различных разрешений.
  5. Добавлять пользовательские макеты для контроллера.
  6. Настраивать размер отображения.
  7. Создавать собственные контроллеры.
  8. Настраивать видимость элементов управления.

Использование ExoVideoView

1. Зависимости

Самый простой способ — добавить зависимость Gradle. Убедитесь, что в файле build.gradle проекта добавлены JCenter и google().

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Затем добавьте следующий код в свой проект:

implementation 'com.github.JarvanMo:ExoVideoView:2.1.6'

2. Определение в XML

Используйте ExoVideoView в XML:

<com.jarvanmo.exoplayerview.ui.ExoVideoView
     android:id="@+id/videoView"
     android:layout_width="match_parent"
     android:layout_height="300dp"/>

3. В коде Java

ExoVideoView предоставляет встроенный Player:

SimpleMediaSource mediaSource = new SimpleMediaSource(url);//Также поддерживает uri
videoView.play(mediaSource);
videoView.play(mediaSource,where);//Воспроизведение с определённой позиции

Также можно использовать собственный Player:

videoView.setPlayer(player);

Примечание: не забудьте освободить ExoPlayer:

videoView.releasePlayer();

Подробности см. в demo().

4. Управление направлением

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); То же самое относится к полноэкранным событиям.

5. Управление возвратом

Во-первых, переопределите 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() .

Дополнительно

1. Поддержка нескольких разрешений

ExoVideoView имеет встроенный селектор разрешения. Если вы включите несколько разрешений и добавите несколько разрешений, встроенный селектор разрешений будет добавлен в overlayFrameLayout.

        List<ExoMediaSource.Quality> qualities = new ArrayList<>();
        ExoMediaSource.Quality quality =new SimpleQuality(quality,mediaSource.url());
        qualities.add(quality);
        mediaSource.setQualities(qualities);

2. Режим отображения контроллера

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);

3. Добавление элементов управления в контроллер

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);

4. Использование настраиваемого контроллера

exo_video_playback_control_view.xml можно настроить. Некоторые свойства определены в ExoVideoPlaybackControlView. Подробности см. в исходном коде.

app:controller_layout_id="@layout/my_controller"

5. Изменение видимости элементов управления

Иногда мы можем не захотеть возвращаться, поэтому давайте спрячем его:

videoView.changeWidgetVisibility(R.id.exo_player_controller_back,View.INVISIBLE);

Дополнительные скрытые элементы управления см. в ids_in_controller;

Обратите внимание: это может быть довольно опасно, и я не могу гарантировать эффект после скрытия.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jarvanmo-ExoPlayerVideoView.git
git@api.gitlife.ru:oschina-mirror/jarvanmo-ExoPlayerVideoView.git
oschina-mirror
jarvanmo-ExoPlayerVideoView
jarvanmo-ExoPlayerVideoView
master