LoopingMediaSource的ExoPlayer,Loop Ended / Started监听器

时间:2017-05-22 09:20:36

标签: android exoplayer

我正在使用ExoPlayer来循环播放视频,但在每个循环启动源视频之前,我需要重置布局的某些状态。我知道当通常的MediaSources的视频结束时,ExoPlayer使用ExoPlayer.STATE_ENDED参数调用onPlayerStateChanged,但是没有为LoopingMediaSource调用它。

@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
    if (playbackState == ExoPlayer.STATE_ENDED) {
        showControls();
        resetLayoutStates(); //I need it here, even in LoopingMediaSource
    }
    updateButtonVisibilities();
}

当Source重启或循环结束时,Exoplayer是否有任何回调?或者它对我的情况有什么解决方法吗?

1 个答案:

答案 0 :(得分:0)

每次视频完成播放时,都会调用EventListener.onPositionDiscontinuity()。在那里你可以调用SimpleExoPlayer#getCurrentWindowIndex()获取当前窗口索引,它基本上会告诉你已经播放了多少时间循环。