本文主要是介绍ExoPlayer的详细使用事件篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ExoPlayer提供的主要事件我们可以查看源码中的PlayerControlView.ComponentListener,它对事件的处理比较多,也比较符合我们使用所要了解的监听。
1. Player.EventListener
EventListener提供了两种方式来监听播放器的视频回调
1.1 总的回调函数EventListener.onEvent(Player player, Events events)
Events携带了播放器所发生的事件,Events属于一个集合来保存的事件,时间以int类型标记, 例如 Player.EVENT_TIMELINE_CHANGED
1.2 单独事件回调
EventListener中除了Events回调,还有单独的每个事件的回调函数。这个函数比较多,我们主要介绍几个常用的
interface EventListener {//播放总时间线改变,这里可用于设置播放总时长default void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) { }//播放资源有改变default void onStaticMetadataChanged(List<Metadata> metadataList) {}//是否在加载default void onIsLoadingChanged(boolean isLoading) {onLoadingChanged(isLoading);}//播放器播放状态改变,查看 State 有IDLE,BUFFERING加载中, READY 资源准备好, ENDED 已结束 default void onPlaybackStateChanged(@State int state) {}//视频资源准备好就播放的设置改变 default void onPlayWhenReadyChanged(boolean playWhenReady, @PlayWhenReadyChangeReason int reason) {}//播放状态改变,开始播放或暂停default void onIsPlayingChanged(boolean isPlaying) {}//重复播放的模式改变 default void onRepeatModeChanged(@RepeatMode int repeatMode) {}default void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {}//播放器报错default void onPlayerError(ExoPlaybackException error) {}//参数改变 default void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {}default void onEvents(Player player, Events events) {}}
ExPlayer提供了回调方法的同时也提供了大量的get方法来供我们调用,当发生事件是也可以调用这些方法来获取播放信息。
获取视频总时间、获取当前播放位置、等
2. PlayerControlView监听
对于控制控件我们有进度更新监听ProgressUpdateListener 和显示隐藏监听 VisibilityListener
ExoPlayer没有给提供每秒的进度回调,只提供了get的当前进度查询,但PlayerControlView中有进度回调,其实也是每秒查看,
VisibilityListener: 监听控制界面是否隐藏或显示。
3. TimeBar的监听
timeBar除了提供播放进度显示外还提供了拖动定位播放的功能。既然有拖动就会有监听,拖动有开始,移动,结束。代码都在TimeBar接口中
TimeBar.OnScrubListener这个接口就能提供拖动位置变化的监听。
这篇关于ExoPlayer的详细使用事件篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!