1

我对 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), ... 这让我发疯。

有什么建议吗?我未来的应用程序依赖于所有设备上的这个功能(能够一个接一个地播放一个视频),所以我真的很绝望。

4

1 回答 1

0

您可以在 Video1 的 onCompleteListener 中创建一个处理程序,并在一段时间后检查您的视频是否正在播放。您可以进一步尝试停止 Video2 并在可运行文件中再次播放它并尝试不同的事情,以了解其他设备是否绝对不可能支持您的逻辑。跟踪从 LogCat 发生的事件。祝你好运

于 2012-08-27T10:50:45.787 回答