String dirPath = File.separator + "Android" + File.separator + "data" + File.separator + context.getPackageName() + File.separator + "mediaDir" + File.separator;
// Path where I want the recorded video to be placed.
File videoFile = new File(Environment.getExternalStorageDirectory() + dirPath + "videoName.mp4");
Uri videoFileUri = Uri.fromFile(videoFile);
intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, videoFileUri);
startActivityForResult(intent, VIDEO_CAPTURE_CODE);
A/StagefrightRecorder(11209): frameworks/base/media/libmediaplayerservice/StagefrightRecorder.cpp:636 mOutputFd >= 0**
...
<A very long memory dump>
...
W/Camera(18796): ICamera died
...
E/Camera(18796): Error 100
HTC Nexus One
手机中会出现此错误,而Nexus 7
等较新设备则不会出现此问题。好像是this bug,HTC,摩托罗拉等多家设备制造商重新实施了camara应用,重新引入了使用EXTRA_OUTPUT
修复的错误。
有没有办法在Nexus One
等设备中正常使用? (除了不使用EXTRA_OUTPUT
然后在收到onActivityResult
时将文件复制到所需目的地)
注意:
我已经使用createNewFile
和mkdirs
尝试了几项确保目标文件存在的事情。
更新 更新了代码以显示文件的放置位置。
答案 0 :(得分:0)
永远不要使用字符串连接来构建文件路径。请使用正确的File
构造函数。
除此之外,Play商店中有数千个相机应用程序,更不用说在设备上了。用户可以选择其中任何一个来处理您的请求。虽然理想情况下所有人都会尊重EXTRA_OUTPUT
,但没有人会对这些应用程序开发者的头部持枪,迫使他们这样做。因此,使用ACTION_VIDEO_CAPTURE
应该被视为“尽力而为”的方法,仅对偶然情况有用,如果第三方应用程序行为不当,那不是问题。