2012-08-03 117 views
1

我对android开发颇为陌生,目前我正在开发一个非常简单的应用程序,其中也包含一些视频。为了演示我的问题,我在我的res/raw /目录中有两个视频(例如video1.mp4和video2.mp4)。我希望在第一个结束后立即开始播放第二个视频。这是我如何调用视频:Android VideoView - 在某些设备上更改路径后的空白视频

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

看来你的设备不支持第二个视频。你是否尝试在另一个应用中播放第二个视频? – busylee 2015-06-15 11:25:39

回答

0

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

相关问题