1.我在创维电视上调用这个自带的方法,每次播放完结束后,他只会循环一次,但是在华为电视机上却是正常的,
2.如果要在setOnCompletionListener里面等待监听,结束后再重新播放,又会出现短暂黑屏的问题,这个时候相当于切换视频了,视觉效果会比较明显,必须要解决这个问题
为了适配多数电视机,我就想了一个法子,开一个线程间隔一秒监听视频的播放进度,在视频播放快结束的时候,把视频拉回来,重新播放
测试下来效果还是可以的
下面是代码
-
- public class LoopingPlayer {
-
- private MediaPlayer mediaPlayer;
- public LoopingPlayer(MediaPlayer mediaPlayer){
- this.mediaPlayer = mediaPlayer;
- }
-
- public void goDo(){
-
- // mediaPlayer.seekTo(0);//在当前位置播放
- new Thread() {
- @Override
- public void run() {
- while (true) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- int pos = mediaPlayer.getCurrentPosition();//当前播放时长
- int dur = mediaPlayer.getDuration();//总时长
- if(dur-pos<=2000){
- // endPlay.playEnd(pos,dur);
- //mediaPlayer.setLooping(true);
- mediaPlayer.seekTo(0);
- mediaPlayer.start();
- }
-
- }
- }
- }.start();
- }
使用方法
loopingPlayer = new LoopingPlayer(mediaPlayer);
loopingPlayer.goDo();