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();