带有EXTRA_OUTPUT的Android Intent MediaStore.ACTION_VIDEO_CAPTURE在播放时崩溃,重拍

时间:2011-02-02 10:00:53

标签: java android

我正在尝试创建一个记录视频并将其保存到SD卡的应用程序,当它再次运行时会覆盖以前的视频。

问题是,当我指定Intent extra EXTRA_OUTPUT时,相机会将视频记录到该位置,但会在重拍和播放点击时崩溃。

我使用的代码如下:

_path = Environment.getExternalStorageDirectory() + "/examplevideo.3gp";

File file = new File(_path);
Uri outputFileUri = Uri.fromFile(file);

Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE );
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);            
startActivityForResult(intent, 0);

当我停止录制时,logcat会说

VERBOSE/videocamera(6602): Setting current video filename: null

这很奇怪,似乎是一个问题。

当我按下播放时,我收到错误,但应用程序一直在运行(录制的视频无法播放)

ERROR/videocamera(6602): Couldn't view video file:///mnt/sdcard/examplevideo.3gp
ERROR/videocamera(6602): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/examplevideo.3gp }
ERROR/videocamera(6602):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
ERROR/videocamera(6602):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
ERROR/videocamera(6602):     at android.app.Activity.startActivityForResult(Activity.java:2817)
ERROR/videocamera(6602):     at android.app.Activity.startActivity(Activity.java:2923)
..

当我按下重拍时,应用程序完全崩溃并出现错误:

ERROR/AndroidRuntime(6602): FATAL EXCEPTION: main
ERROR/AndroidRuntime(6602): java.lang.IllegalArgumentException: Unknown URL file:///mnt/sdcard/examplevideo.3gp
ERROR/AndroidRuntime(6602):     at android.content.ContentResolver.delete(ContentResolver.java:671)
ERROR/AndroidRuntime(6602):     at com.android.camera.VideoCamera.deleteCurrentVideo(VideoCamera.java:1010)
ERROR/AndroidRuntime(6602):     at com.android.camera.VideoCamera.discardCurrentVideoAndInitRecorder(VideoCamera.java:476)
ERROR/AndroidRuntime(6602):     at com.android.camera.VideoCamera.onClick(VideoCamera.java:420)
ERROR/AndroidRuntime(6602):     at android.view.View.performClick(View.java:2408)
...

奇怪的是,这个视频被保存到给定的位置,我可以从我的SD卡中播放,只是相机活动无法识别它。

非常感谢一些帮助或想法!

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试根据错误消息启动视频播放器(而不是在VideoView小部件中播放视频。

尝试指定您的意图数据类型为视频:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse(yourVideoURI), "video/*");
startActivity(i);

请注意,以上yourVideoURI将是您从data.getData()

中的onActivityResult()返回的内容