我有一个带有VideoView的应用程序,为了让视频在循环中播放我使用onCompletionListner再次调用setVideoPath(),如下所示:
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer arg0) {
mVideoView.start();
}
});
mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//I have a log statment here, so I can see that it is making it this far.
mp.reset(); // <--- I added this recently to try to fix the problem
mVideoView.setVideoPath(file.getAbsolutePath());
}
});
此设置适用于我目前遇到的所有设备,我从未遇到任何麻烦,不再重复。
然而,我正在测试的摩托罗拉Xoom最近升级为ICS。现在,它在ICS上,这将工作一段时间并循环视频。但最终(我添加了一个计数器和一些Logs,似乎没有任何模式在停止之前成功循环多少次)它将退出循环并且只是坐在电影中第一帧的冻结帧上。
有谁知道什么可能导致这种情况不再正常循环?或者有没有人知道另一种让VideoView正常循环的方法仍然可以在ICS下工作?
答案 0 :(得分:10)
如果您只有一个视频可以播放,则可以在准备好的侦听器中设置“启用”(true)。
myVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.setLooping(true);
}
});
你已经完成了。
答案 1 :(得分:3)
到目前为止:
mp.reset();
onComplete回调中的似乎解决了这个问题。如果有人能用它来解释发生了什么,那将会非常感兴趣。