我想开发一个能够在同一 VideoView 上播放多个视频的 Android 应用。当一个视频播放完毕后,第二个视频就要开始播放,以此类推。
我的视频存储在项目的 raw 文件夹中,我通过以下代码获取它们的文件名:
Field[] fields = R.raw.class.getFields();
final List<String> videoNames = new ArrayList<String>() ;
for(Field field: fields){
videoNames.add(field.getName());
}
然后我将第一个的路径设置为我的视频视图。
videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ videoNames.get(0));
myVideoView.setVideoURI(videoUri);
与他人协作
myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
videoUri = Uri.parse("android.resource://" + getActivity().getPackageName() + "/"
+ videoNames.get(VideoI));
myVideoView.setVideoURI(videoUri);
myVideoView.start();
if(VideoI==videoNames.size()-1)
{
VideoI=0;
}
else{
VideoI++;
}
}
});
但是...
每次我在真实设备上尝试这段代码时,当第一个视频结束时,我都会收到相同的错误提示 "无法播放视频"...
所有视频都是使用我用于开发的同一设备录制的 .mp4 文件...
有什么想法吗?或者其他按顺序播放更多视频的方法?我到处寻找解决方案,但找不到...
编辑
搞定了!!好吧...错误太傻了..感谢大家提供的帮助。
错误在于我查找的路径("这不是你要找的路径" 引用自星球大战)。
正如我所写的,所有视频都存储在 raw 文件夹中。我一直在使用
videoUri = Uri.parse("android.resource://" + MainActivity.ctx.getPackageName() + "/
+ videoNames.get(VideoI));
添加原始文件夹至路径
videoUri = Uri.parse("android.resource://" + MainActivity.ctx.getPackageName() + "/raw/"
+ videoNames.get(VideoI));
终于成功了...就像我所写的一样...只是一个愚蠢的错误...