我正在尝试创建一个记录视频并将其保存到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卡中播放,只是相机活动无法识别它。
非常感谢一些帮助或想法!
答案 0 :(得分:0)
您似乎正在尝试根据错误消息启动视频播放器(而不是在VideoView小部件中播放视频。
尝试指定您的意图数据类型为视频:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse(yourVideoURI), "video/*");
startActivity(i);
请注意,以上yourVideoURI
将是您从data.getData()
onActivityResult()
返回的内容