2011-03-16 6 views
3

私は、インテントを使用してカメラアプリケーションを起動する必要があるアプリケーションで作業しています。カメラは画像モードまたはビデオモードで起動され、これまでのところ動作し、結果ファイルをsdcardに保存します。今、問題は、新しいカスタムファイル名を指定することは、画像の意図に対して機能しますが、カムコーダーの意図に対しては機能していないようです。実際には、EXTRA_OUTPUTまたは単に「出力」がビデオの意図で無視されるようです。私は、次のコードを使用しています:絵のためにAndroidカスタムビデオキャプチャファイルパスが機能しない

(全てがカスタムファイル名で写真を保存など、不思議に動作します)

// 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); 

のように、絵の意図は私のカスタムファイル名で画像を保存しますが、ビデオの意図ははっきりそれを無視し、常に使用してファイルを保存しますデフォルトのファイル名私の質問は:

)私はカスタムファイル名を使用してこの作品を作ることができますか? b)あるいは、次に利用可能な既定のファイル名を事前に知る方法がありますか? c)ファイルが作成されたことを知り、名前を変更する方法は他にありますか?

よろしくお願いします。

アラム

+0

この問題の解決方法はありますか? – Mohit

答えて

0

私は意図を呼び出す前に、私の将来のビデオのURIを与えるメディアストア内の行を挿入します。 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

関連する問題