在某些设备上更改路径后出现空白视频

我对android开发很陌生,目前我正在开发一个非常简单的应用程序,其中也包含一些视频。 为了演示我的问题,我在我的res / raw /目录中有两个视频(例如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)......,这让我疯狂。

任何建议? 我未来的应用取决于这个功能(能够在所有设备上播放一个视频),所以我真的非常渴望这一点。


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

链接地址: http://www.djcxy.com/p/46495.html

上一篇: blank video after path change on some devices

下一篇: Android VideoView prevent on video change