我对android开发很新,我目前正在开发一个非常简单的应用程序,其中也包含一些视频。为了演示我的问题,我在res / raw /目录中有2个视频(例如video1.mp4和video2.mp4)。我想在第一个视频结束后立即开始播放第二个视频。这就是我调用视频的方式:
public void showVideo1() {
VideoView vd = (VideoView)findViewById(R.id.videoview);
vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video1);
vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
public void onCompletion(MediaPlayer mp)
{
Log.d("VideoComplete", "Video 1 is complete");
showVideo2(); // start playing the second video...
}
});
vd.start();
}
public void showVideo2() {
VideoView vd = (VideoView)findViewById(R.id.videoview);
vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video2);
vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
public void onCompletion(MediaPlayer mp)
{
Log.d("VideoComplete", "Video 2 is complete");
}
});
vd.start();
}
这个例子适用于大多数设备 - 我称之为showVideo1(),调用showVideo2,两个视频都播放了。但我发现有些设备不能播放第二个视频(???)。例如,我的旧三星Galaxy 5 i5500在完成第一个视频后只显示一个空白屏幕 - 我可以在调试中看到第二个视频已加载并启动但它没有显示 - 第一个视频播放没有问题。这款手机使用Android v2.2,我也尝试使用相同操作系统版本的另一台设备(Galaxy Tab GT-P1000),并在那里播放这两个视频。
我尝试重新录制视频(认为这是编解码器错误),但仍然没有运气。我也玩过setZOrderOnTop(true),seekTo(0),......它让我发疯了。
有什么建议吗?我未来的应用程序取决于所有设备上的此功能(能够一个接一个地播放一个视频),所以我真的非常绝望。
答案 0 :(得分:0)
您可以在Video1的onCompleteListener中创建一个处理程序,并在一段时间后检查您的视频是否正在播放。您可以进一步尝试停止Video2并在runnable中再次播放它并尝试不同的事情只是为了知道其他设备是否绝对不能支持您的逻辑。跟踪LogCat发生的事件。祝你好运