Android exoPlayer搜索完成时的回调

4zcjmb1e  于 2022-09-21  发布在  Android
关注(0)|答案(3)|浏览(262)

我在安卓系统上使用的是exoplay。我需要显示进度指示器时,视频正在寻找。我可以开始在SEEKTO方法上显示进度指示器,但是当搜索完成时,我应该使用哪个回调方法来隐藏进度指示器。

vyu0f0g1

vyu0f0g11#

实施ExoPlayer.EventListener。有一种方法onPlayerStateChanged。当playbackState == ExoPlayer.STATE_READY时,隐藏您的进度指示器。

xhv8bpkk

xhv8bpkk2#

**简单回答:**听@Sough,结合使用EventListener.onPlaybackStateChangedSTATE_READY

说来话长:

onSeekProcessed()乍听起来很完美,但自从ExoPlayer2.12.0版以来,它就被弃用了,并发表了以下评论:
@不推荐使用的搜索将立即得到处理。转而收听#onPositionDisContinity(Int),原因为#DISSTUSTATION_REASON_SEEK。

因此,onPositionDiscontinuity(int)应该与DISCONTINUITY_REASON_SEEK一起使用。

不知何故,这让我想知道这是否真的会在搜索完成并且视频准备好毫无延迟地继续时触发(就像“onSeekProceded”中那样)。因为在语义上,搜索被发起的时刻可能已经被解释为位置不连续(如在“搜索被无延迟地处理”中)。

事实上,当您查看我在运行时情况下测量的事件的时间时,事情变得很明显:

0ms - <Seek initiated>
  1ms - onPositionDiscontinuity -> DISCONTINUITY_REASON_SEEK
  2ms - onPlaybackStateChanged -> STATE_BUFFERING
  4ms - onSeekProcessed
208ms - onPlaybackStateChanged -> STATE_READY

这表明使用STATE_READY监听onPlaybackStateChanged仍然是最佳选择。

总结:onSeekProcessed听起来真的很好,但它做了错误的事情。因此,它已被弃用,并提供了一个替代方案。不幸的是,这不是预期中的事情。这很棘手,但却是真的。

tnkciper

tnkciper3#

onSeekProcessed(),您将在Player.EventListener中得到这个。

相关问题