Пауза exoplayer по умолчанию и ответ на кнопку воспроизведения / паузы - PullRequest
0 голосов
/ 01 июля 2019

После загрузки видео оно начинает воспроизводиться.Я хочу, чтобы видео было приостановлено в самый первый раз после загрузки.Если пользователь нажимает кнопку возобновления, он должен начать играть.Как я могу добиться этого для exoplayer2.ui.PlayerView?

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Я хочу, чтобы видео было приостановлено в самый первый раз после загрузки

. Вы можете использовать player.setPlayWhenReady(false); при запуске Player.

Если пользователь нажимает кнопку возобновления, он должен начать играть.

Вы можете добавить ControlDispatcher в свой PlayView, вызвав метод setControlDispatcher(@Nullable ControlDispatcher controlDispatcher), например playerView.setControlDispatcher(new MyDefaultControlDispatcher());

Класс MyDefaultControlDispatcher - это мой пользовательский ControlDispatcher, как показано ниже:

private class MyDefaultControlDispatcher extends DefaultControlDispatcher {

    @Override
    public boolean dispatchSetPlayWhenReady(Player player, boolean playWhenReady) {
        super.dispatchSetPlayWhenReady(player, playWhenReady);
    if (playWhenReady && player.getPlaybackState() == Player.STATE_READY) {
        player.setPlayWhenReady(true);
    }
        return true;
    }
}

Вы можете наследовать от DefaultControlDispatcher до Override вашего любимого метода, например dispatchSetPlayWhenReady, ИЛИ реализовать интерфейс ControlDispatcher.

Метод dispatchSetPlayWhenReady будет получать событие нажатия на кнопку воспроизведения / остановки в вашем PlayView.Вы можете проверить это в вашем PlayerControlView OnClick методе.Я покажу вашу картинку, как показано ниже: enter image description here

PS: Как @ahmedaljubair упомянул, что метод setPlayWhenReady работает только тогда, когда игрок находится вготовое состояние.Итак, вам нужно проверить состояние игрока, когда вы вызываете метод setPlayWhenReady, чтобы приостановить и возобновить игрока.

0 голосов
/ 01 июля 2019

Передача значения false в setPlayWhenReady(() делает паузу:

player.setPlayWhenReady(false)

И так как вы хотите реализовать кнопку «возобновить», как вы упомянули, используйте это:

player.setPlayWhenReady(!player.getPlayWhenReady());

Для справки, цитата для документации :

void setPlayWhenReady(boolean playWhenReady) устанавливает, должно ли воспроизведение продолжаться, когда getPlaybackState () == STATE_READY. Если проигрыватель уже находится в состоянии готовности, этот метод можно использовать для приостановки и возобновления воспроизведения.

...