代码
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);
LogCat 输出
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
. 似乎是这个错误,其中一些设备制造商(如 HTC、摩托罗拉等)重新实现了 camara 应用程序,重新引入了这个使用EXTRA_OUTPUT
.
有没有办法让它在像这样的设备中正常工作Nexus One
?(除了不使用EXTRA_OUTPUT
,然后在收到文件时将文件复制onActivityResult
到所需的目的地)
注意:我已经尝试了几件事,例如确保目标文件存在,使用createNewFile
and mkdirs
.
更新: 更新了代码以显示文件的放置位置。