2011-03-16 53 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