加载视频后,它开始播放。 我希望视频在加载后第一次暂停。如果用户单击“继续”按钮,则必须开始播放。如何为exoplayer2.ui.PlayerView实现此目的?
答案 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;
}
}
您可以继承DefaultControlDispatcher
到Override
您喜欢的方法,例如dispatchSetPlayWhenReady
,或实现接口ControlDispatcher
。
方法dispatchSetPlayWhenReady
将使您的点击事件在PlayView
中的播放/停止按钮上。您可以通过PlayerControlView
的{{1}}方法进行验证。我将显示您的图片如下:
PS:就像@ahmedaljubair提到的那样,OnClick
方法仅在玩家处于就绪状态时才有效。因此,当您调用setPlayWhenReady
方法来暂停和恢复播放器时,需要检查播放器的状态。
答案 1 :(得分:-1)
将false
的值传递给setPlayWhenReady(()
使其暂停:
player.setPlayWhenReady(false)
并且由于您要实现前面提到的“恢复”按钮,请使用以下命令:
player.setPlayWhenReady(!player.getPlayWhenReady());
作为参考,引用documentation:
void setPlayWhenReady(boolean playWhenReady)
设置当getPlaybackState()== STATE_READY时是否应继续播放。如果播放器已经处于就绪状态,则可以使用此方法暂停和继续播放。