如何暂停ExoPlayer 2的播放并恢复(已删除PlayerControl)

44
ExoPlayer < 2.x中,有一个名为PlayerControl的类,其中包括pause()resume()函数,但它已经被移除。我找不到在ExoPlayer 2上实现这个功能的方法。
我该如何暂停和恢复播放?
3个回答

88
您可以使用void setPlayWhenReady(boolean playWhenReady)方法。 如果Exo已准备好,则传递false将暂停播放器。传递true将恢复播放。您可以使用getPlaybackState()检查播放器的状态。

1
请用代码回答,以便正确理解。 - Akash Dubey
27
要使用同一个按钮暂停和播放,您可以使用以下代码:player.setPlayWhenReady(!player.getPlayWhenReady()); - Saeed.re

44

这是我的方法。创建两个方法并在需要时调用它们。

private void pausePlayer(){
    player.setPlayWhenReady(false);
    player.getPlaybackState();
}
private void startPlayer(){
    player.setPlayWhenReady(true);
    player.getPlaybackState();
}

把他们叫到这里来

 @Override
protected void onPause() {
    super.onPause();
   pausePlayer();

}

@Override
protected void onResume() {
    super.onResume();
    startPlayer();
}

21
为什么在“准备好播放”状态改变后调用player.getPlaybackState(); - Daniel Gomez Rico
1
Exoplayer在恢复时需要1秒/2秒的时间。如何解决音频播放正常,但视频开始较晚的问题? @Override protected void onResume() { super.onResume(); startPlayer(); } - Sagar
4
不需要。也许他想展示它是可行的。 - android developer

4

播放

player.setPlayWhenReady(true);

暂停

player.setPlayWhenReady(false);

您可以通过以下方式检查播放状态:

private boolean isPlaying() {
return player != null
    && player.getPlaybackState() != Player.STATE_ENDED
    && player.getPlaybackState() != Player.STATE_IDLE
    && player.getPlayWhenReady();
}

这些代码来自 PlayerControlView


1
为什么不直接使用 player.getPlaybackState() == Player.STATE_READY 呢? - Vlad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接