一、回顾
1、开发步骤
2、开发流程
首先实现入口方法load(),第一步一定是去加载,load()会出现两种情况,load()失败会进入stop(),stop()在完成清空工作以后,会根据次数去重新load(),直到load()到规定的次数为止。而load成功会进入到onPrepared()方法中,在onPrepared()方法中可以根据条件判断播放器是否要resume()、pause(),如果是pause()的话就直接进入到了暂停状态,而如果是resume()的话,即视频正常播放,又会有播放结束onComplete()和onError()两种情况。如果是onError()的话会调用listener的onError方法通知外层。如果是onComplete()的话不仅要通知外层播放完成,还有调用playback()方法,让视频调回到第一帧,然后便于下次播放,这是总的开发思路
二、封装业务逻辑
1、SDK是由特定的功能和特定的业务逻辑两部分来封装组合起来的,如果只有视频播放,最多只算是一个库,并不能叫SDK。叫SDK一定是有它自己的一套逻辑的。
2、
注:为什么要统计视频播放次数?
客户端经常弹出的广告是如何收费的?是根据视频被播放了多少次或者被出现了多少次来付费的,所以要实现统计视频播放次数逻辑
3、思路点拨
①如果计算播放器在屏幕中出现的百分比?
首先,屏幕的宽高是能够获取到的,如果直接用customvideoview.getX()和getY(),其实获取到的是它在父容器中的横纵坐标,通过getX()和getY()来进行计算肯定是不合理的,因为它获取到的并不是它在整个屏幕中的位置或者百分比而是它在父容器中的百分比。那么转变一下思路,能不能获取customvideoview在屏幕中出现的位置呢?这样是可以的。view中已经提供了这样的api。
②小屏播放到全屏播放能复用同一个播放器吗?
一定是可以的。因为小屏的时候已经初始化好了播放器,并且把它添加到了父容器中。在全屏的时候,只需要将小屏的videoview从中移出来并添加到另一个父容器中,就复用了这个播放器。
③如何监听到播放器产生的各种事件
有一个listener,listener中有各种各样它关注的方法