0

カメラの意図で撮影した画像を保存しようとしています。私のコードは機能していなかったので、ディレクトリが作成されているかどうかのチェックを追加したとき、そうではなかったはずです.何が間違っている可能性がありますか? エミュレータで試しています。

01-11 13:50:28.946: D/file(1161):  file is /mnt/sdcard/M3
01-11 13:50:28.946: D/file(1161):  photo is /mnt/sdcard/M3/3_1.jpg

ログに上記を取得します。

以下は、カメラを開くボタンにあるコードです

File sdCard = Environment.getExternalStorageDirectory();
            File file = new File (sdCard.getAbsolutePath() , File.separator + "/M3");
            file.mkdirs();
            String name = e_id + "_" + (size+1)+ ".jpg";
            File newfile = new File(file,name);
            newfile.mkdir();

                Log.d("file"," file is " + file.toString());
                Log.d("file"," photo is " + newfile.toString());


            if(!file.mkdir())
            {
                Log.d("file"," not created ");
                }
            if(!newfile.mkdir())
            {
                Log.d("newfile"," not created ");
                }
            else
            {
                outputFileUri = Uri.fromFile(newfile);
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                startActivityForResult(intent, TAKE_PICTURE);


            }
4

2 に答える 2

1

問題は、画像ファイルをディレクトリとして扱っていることです。

newfile.mkdir();

試す:

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath(), File.separator + "/M3");
if (!dir.mkdirs())
{
    Log.e(TAG, "Failed to create directory " + dir);
    return false;    // Assuming this is in a method returning boolean
}
String filename = e_id + "_" + (size+1)+ ".jpg";
File file = new File(dir, filename);

Log.d(TAG, "dir is " + dir.toString());
Log.d(TAF, "file is " + file.toString());

outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);

注: 変数に適切な名前を付ける必要があります。fileファイルではなく、ディレクトリです。 newfileこのコード スニペットで重要なファイルはfile.

于 2013-01-11T09:25:50.117 に答える
0

この行を置き換えます

File file = new File (sdCard.getAbsolutePath() , File.separator + "/M3");

これで。

File file = new File (sdCard.getAbsolutePath()+"/YourDirectoryName");
于 2013-01-11T09:24:19.467 に答える