默认情况下暂停exoplayer并响应播放/暂停按钮

时间:2019-07-01 10:27:56

标签: android video-streaming exoplayer2.x

加载视频后,它开始播放。 我希望视频在加载后第一次暂停。如果用户单击“继续”按钮,则必须开始播放。如何为exoplayer2.ui.PlayerView实现此目的?

2 个答案:

答案 0 :(得分:0)

  

我希望视频在加载后第一次暂停

初始化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;
    }
}

您可以继承DefaultControlDispatcherOverride您喜欢的方法,例如dispatchSetPlayWhenReady实现接口ControlDispatcher

方法dispatchSetPlayWhenReady将使您的点击事件在PlayView中的播放/停止按钮上。您可以通过PlayerControlView的{​​{1}}方法进行验证。我将显示您的图片如下: enter image description here

PS:就像@ahmedaljubair提到的那样,OnClick方法仅在玩家处于就绪状态时才有效。因此,当您调用setPlayWhenReady方法来暂停和恢复播放器时,需要检查播放器的状态。

答案 1 :(得分:-1)

false的值传递给setPlayWhenReady(()使其暂停:

player.setPlayWhenReady(false)

并且由于您要实现前面提到的“恢复”按钮,请使用以下命令:

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

作为参考,引用documentation

  

void setPlayWhenReady(boolean playWhenReady)设置当getPlaybackState()== STATE_READY时是否应继续播放。如果播放器已经处于就绪状态,则可以使用此方法暂停和继续播放。