2011-03-16 51 views
3

我正在使用意图启动相机应用程序的应用程序中工作;相机以图片或视频模式启动,到目前为止它工作并将生成的文件保存在SD卡中。现在的问题是,虽然指定一个新的自定义文件名适用于图片意图,但它似乎不适用于摄像机意图;实际上,EXTRA_OUTPUT或者简单地“输出”似乎在视频意图中被忽略。我使用以下代码:Android自定义视频捕捉文件路径不起作用

对于图片(所有的作品不知道,包括节约使用自定义文件名PIC)

// makes new unique filenames like Picture_03161185528.jpg 
fileName = makeFileName("Picture")+".jpg"; 
path = (new StringBuilder()). 
      append(Environment.getExternalStorageDirectory()). 
      append("/"+fileName).toString(); 
File file = new File(path); 
Uri outputFileUri = Uri.fromFile(file); 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra("output", outputFileUri);   
mainActivity.startActivityForResult(intent, CAMERA_RESULT); 

对于视频(需要视频,但总是用默认的名称像VIDEO001,VIDEO002等,而不是自定义文件名,我需要)

// makes new unique filenames like Video_03161185528.3gp   
fileName = makeFileName("Video")+".3gp"; 
// even tried this hardwired filename...but nothing 
fileName = "video.3gp"; 
path = (new StringBuilder()). 
      append(Environment.getExternalStorageDirectory()). 
      append("/"+fileName).toString(); 
File file = new File(path); 
Uri outputFileUri = Uri.fromFile(file); 
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
// seems to be ignored, the file always get saved under default filename 
intent.putExtra("output", outputFileUri);  
// same as previous line...seems to be ignored 
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
mainActivity.startActivityForResult(intent, VIDEO_RESULT); 

在任何情况下,画面意图节省我的自定义文件名的画面,但视频目的显然忽略它,总是使用保存文件默认的文件名。我的问题是:

a)有什么办法可以使用自定义文件名进行这项工作吗? b)或者有什么方法可以正确地知道下一个可用的默认文件名? c)或者有任何其他方式知道哪个文件被创建并重命名它?

欢呼声,谢谢!

亚兰

+0

您是否找到解决此问题的方法? – Mohit

回答

0

我在这给我今后的视频的URI调用意图之前mediastore插入一行。一旦你有了uri,你就可以在文件上做出你想要的任何动作。

ContentValues values = new ContentValues(); 
values.put(MediaStore.Video.Media.TITLE, "video name");         
values.put(MediaStore.Images.Media.DATE_TAKEN,System.currentTimeMillis());     
//videoUri = mediastore path  
videoUri = CaptureContentFragment.this.getActivity().getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);     
//create new Intent      
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri); 
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 20); 
CaptureContentFragment.this.getActivity().startActivityForResult(intent, TabsActivity.VIDEO_REQUEST_CODE); 
+0

这是否工作? – NitZRobotKoder