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();
该博客主要讨论了在不同品牌电视机上实现视频循环播放时遇到的问题,如创维电视与华为电视的行为差异。作者提出了一种通过线程监控视频播放进度并在接近结尾时重新开始播放的策略,以避免黑屏和视觉突变。提供的代码示例展示了如何创建一个LoopingPlayer类来实现这个功能。
2163

被折叠的 条评论
为什么被折叠?



