嘻哈帮面试

1.传值除了用Intent还能用什么
2.自定义view
3.事件分发机制
4.让周末在家:视频实现倍速、镜像以及AB循环播放(倍速和镜像面试官已经做出来了,只要完成AB循环播放,模仿中舞网app的视频播放)
5.技术是个妹子,技术是个妹子,技术是个妹子

周末找demo,找视频播放框架,去ijkplayer-issues的github上提问最后没有思路放弃了,周一上午一觉睡起来,突来来了灵感
1.先随便找了个demo用来设置ab两点-ATDragViewDemo
2.采用Viatmio框架播放(妹子用的就是这个)
3.获取视频的时间长度duration = mVideoView.getDuration(),结果得到的值始终是-1,查了下说要在视频播放器的准备事件里获取

 mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                //此处设置播放速度为正常速度1,可以更改倍速
                mediaPlayer.setPlaybackSpeed(1.0f);
                //在这里获取
                duration = mediaPlayer.getDuration()
            }
        });

这会结果终于不是-1了,变成0了,算了时间快来不及了,写死吧,反正以后获取视频播放地址的时候会返回视频的时间长度的(如果不返回再说0.0)
4.根据时间的长度(多少秒)来把上面的ATDragView分成多少份,每滑动一次就是一秒
5.在ATDragView的OnDragFinishedListener中分别设置ab两点

 atDragView.setLinstener(new ATDragView.OnDragFinishedListener() {
            @Override
            public void dragFinished(int leftPostion, int rightPostion) {
                //因为每次滑动a或者b都会进入这个方法
                //当我只滑动了b的时候,也会让视频跳转到a开始播放
                //所以每次记录下新的a的位置`newStart`,与全局的`start`作比较,如果不一致就保存新的位置,并跳转到新的位置播放
                long newStart = leftPostion;
                long newEnd = rightPostion;
                if (start != newStart) {
                    start = leftPostion;
                    mVideoView.seekTo(start);
                }
                end = rightPostion;

                Log.i("test", "开始:" + leftPostion + "结束:" + rightPostion + "当前 毫秒" + start);
            }
        });

6.找到获取当前播放事件的方法mVideoView.getCurrentPosition(),然后起个定时器,每隔一秒查询下当前的位置,如果大于等于b就跳转到a

 timer = new Timer();//定时器,每隔一秒查询下当前的进度
 timer.schedule(task, 0, 1000);
 TimerTask task = new TimerTask() {
            @Override
            public void run() {
                long currentPosition = mVideoView.getCurrentPosition();//获取当前播放进度
                if (end != 0 && currentPosition >= end) {//如果进度大于等于设置的b,那么跳转到a
                    mVideoView.seekTo(start);
                }
            }
        };

一个简单的demo就完成了,当我兴高采烈的发给面试官的时候,面试官说别人一个下午就做好了,唉,心塞,谁让自己以前没有做过视频播放呢,记录下,就当锻炼自己了

你可能感兴趣的:(嘻哈帮面试)