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这个接口就能提供拖动位置变化的监听。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值