我是Android的新手,想要一个接一个地播放视频,以便它看起来像连续视频。
我发现stackoverflow上的这个链接非常有帮助。 how-to-play-videos-one-after-another-simultaneously 当我使用这个时,虽然我可以一个接一个地播放视频, 但是,从一个片段切换到另一个片段会导致暂停视频一秒钟,然后播放下一个。因此,它看起来不像连续视频。
请帮我解决我的问题。 这是我的代码。
public class VideoActivity extends Activity{
VideoView videoView, videoView1;
MediaController mc;
int count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
videoView = (VideoView) findViewById(R.id.VVSimpleVideo);
setup();
videoView.setOnCompletionListener(completionListener);
}
public void setup() {
String _path = "/mnt/sdcard/Video/"+count+".mp4";
videoView.setVideoPath(_path);
videoView.start();
count++;
}
private OnCompletionListener completionListener=new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.stop();
setup();
}
};
}
现在我尝试了两个VideoView类实例。 试图通过第一个播放器播放第一个视频,第二个播放器播放第二个视频, 来自第一个玩家的第三个视频和来自第二个玩家的第四个视频等等。
但我仍然无法顺利播放视频,同样存在问题。
这是我的双重播放器代码。
public class VideoActivity extends Activity{
VideoView videoView, videoView1;
MediaController mc;
int count = 0;
String _path;
String _path1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
videoView = (VideoView) findViewById(R.id.VVSimpleVideo);
_path = "/mnt/sdcard/Video/"+count+".mp4";
videoView.setVideoPath(_path);
videoView.start();
//setup();
videoView.setOnCompletionListener(completionListener);
videoView1 = (VideoView) findViewById(R.id.VVSimpleVideo);
videoView1.setOnCompletionListener(completionListener1);
count++;
_path1 = "/mnt/sdcard/Video/"+count+".mp4";
videoView1.setVideoPath(_path1);
}
public void setup() {
videoView.start();
count++;
_path1 = "/mnt/sdcard/Video/"+count+".mp4";
videoView1.setVideoPath(_path1);
}
public void setup1() {
videoView1.start();
count++;
_path = "/mnt/sdcard/Video/"+count+".mp4";
videoView.setVideoPath(_path);
}
private OnCompletionListener completionListener=new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.stop();
setup1();
}
};
private OnCompletionListener completionListener1=new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.stop();
setup();
}
};
}
答案 0 :(得分:2)
您根本没有真正使用两个VideoViews
,而是将VideoView
和VideoView1
分配给R.id.VVSimpleVideo
,因此它们是同一个对象。这意味着每次点击onCompletion
时,它都会重新设置自己,而不是设置一个并播放另一个。
尝试在布局中创建两个单独的VideoView
对象。将一个设置为VISIBLE
,将一个设置为GONE
/ INVISIBLE
,并在需要更改时进行交换。