我正在使用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是否有任何回调?或者它对我的情况有什么解决方法吗?
答案 0 :(得分:0)
每次视频完成播放时,都会调用EventListener.onPositionDiscontinuity()
。在那里你可以调用SimpleExoPlayer#getCurrentWindowIndex()
获取当前窗口索引,它基本上会告诉你已经播放了多少时间循环。