2012-03-25 18 views
2

カメラから撮影した画像をSDカードの特定のフォルダに保存すると助けていただけますか?私のカメラが開き、写真を撮って保存します。標準フォルダに保存します。写真を特定のフォルダに保存する

public class Camera extends Activity { 
public static final int MEDIA_TYPE_IMAGE = 1; 
public static final int MEDIA_TYPE_VIDEO = 2; 
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100; 
String Path; 
private Uri fileUri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle extras=getIntent().getExtras(); 
    Path= extras.getString("Path"); 
    Log.d("camear","path: "+Path); 
    //File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp"); 

    Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
     this.startActivity(intent); 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    //mediaFile = new File(mediaStorageDir.getPath() + File.separator +"IMG_"+ timeStamp + ".jpg"); 

    //fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 
    Uri outputFileUri= Uri.fromFile(new File(Path+"/camera/"+timeStamp+".jpg"));// create a file to save the image 
    intent.putExtra("output", outputFileUri); // set the image file name 

    // start the image capture Intent 
    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

パスは、アプリケーション上の他の活動から来て、それはその値が細かい通過:私はそう持っているコードです。以前のアクティビティでは、ピクチャを保存するフォルダを作成します。

私は以下の答えを見て、いくつかの提案を実装しようとしました:How to save images from Camera in Android to specific folder?。私が試してくれなかったことの1つは、OnActivityResultに関する最後の提案でした。それが鍵ですか、それとも他に何かがありませんか?このページではContentResolver The Camera Intent is simply not workingについて言及していますが、どちらのページも同じように見えますが、別の方法で見ています。

+1

Paul、この 'intent.putExtra(MediaStore.EXTRA_OUTPUT、outputFileUri);' –

+0

をファイルに追加するか、すでに持っている他のintent.putExtraを置き換えることをお勧めしますか?私がそれを加えるか、またはそれに置き換えることを試みるとき、同じことが同じことをします。デバッガを使用して、outputFileUriがfile:/// mnt/sdcard/BucketMonkey/32rm215/cameraを指していることがわかります。パスの最後のファイルを追加するのは標準ですか?私はカメラを含むパスのためのmkdirを持っていない、それは私の問題を引き起こしているだろうか? –

+0

私の以前の投稿を編集できませんが、自分のコメントだったカメラについてのコメントを無視してください。しかし、正当なフォルダへのパスであっても、メインのカメラフォルダに保存されます。 –

答えて

1

私が間違っていたことを理解しました。コードを見ると、私は2つの間違いを犯しました。最初の間違いは私の道だった。前のアクティビティから正しいパスが得られましたが、ここではフォルダパスを作成しませんでした。

File Folder=new File(Path); 
File picFile= new File(Folder.getPath()+"/"+timeStamp+".jpg"); 

最初の行はフォルダをチェックし、2行目はフォルダへのパスを使用してファイルを作成します。私はどちらの部分も持っていませんでした。それが道を見出すことなく、それはただの節約だった。

私のインテントコールでもう1つ問題があったのは、MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERAです。 @Overridesを一切持たないこれは、実際にカメラのフォルダに保存されているように見えます。私はこれを以下のように変更しました:
MediaStore.ACTION_IMAGE_CAPTURE、私はもう少しコントロールが可能です。

私が持っていたと考えていた別の問題は、ACTION_IMAGE_CAPTUREを使用していました。しかし、onActivityResultをカメラアプリケーションから返された結果コードを使用して実装すると、カメラを再呼び出しして再度実行するか、閉じることで別のアクティビティに戻ることができます。元の質問の一部ではありませんでしたが、私が持っていた問題でした。

+0

ソリューションを投稿できますか? –

関連する問題