我有一个非常简单的应用程序,目前可以拍照然后保存图像。目前的问题是,由于某种原因,我无法找到图像在手机上的保存位置。
我想要做的最终结果是,当拍摄照片时,图像会保存到 SD 卡上创建的新文件夹中,但如果该文件夹尚不存在,则必须创建该文件夹(自动创建) ),然后才能保存图像。
我尝试过使用答案在这个问题中 https://stackoverflow.com/questions/8402378/how-to-save-image-captured-with-camera-in-specific-folder但似乎无法在没有错误的情况下合并它imageIntent cannot be resolved
编辑:图像现在保存到 SD 卡并创建文件夹,但覆盖上一张图像我需要它来保存多个图像(如果有人有任何建议)代码已更新
这是我的代码片段:
PictureCallback myPictureCallback_JPG = new PictureCallback(){
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
/*Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */
int imageNum = 0;
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch");
imagesFolder.mkdirs(); // <----
String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
File output = new File(imagesFolder, fileName);
while (output.exists()){
imageNum++;
fileName = "image_" + String.valueOf(imageNum) + ".jpg";
output = new File(imagesFolder, fileName);
}
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
OutputStream imageFileOS;
try {
imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(AndroidCamera.this,
"Image saved: ",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
camera.startPreview();
}};
EDIT
代码已更新,现在可以将多个图像保存在 SD 卡上创建的新文件夹中。