【发布时间】:2011-12-21 11:07:26
【问题描述】:
我有一个非常简单的应用程序,它现在拍照然后保存图像。目前的问题是,由于某种原因,我无法在手机上找到图像的保存位置。
我正在尝试做的最终结果是,当拍摄照片时,图像会保存到 SD 卡上创建的新文件夹中,但如果该文件夹不存在,则必须是在保存图像之前(自动)制作。
我曾尝试使用答案in this question,但似乎无法在没有收到错误imageIntent cannot be resolved 的情况下将其纳入其中
编辑:图像现在保存到 SD 卡并创建文件夹,但会覆盖以前的图像如果有人有任何建议代码已更新,我需要它来保存多个图像
这是我的代码的 sn-p:
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();
}};
编辑
代码已更新,现在可以将多个图像保存在 SD 卡上创建的新文件夹中。
【问题讨论】:
-
什么是`Uri uriSavedImage = Uri.fromFile(image);`中的“图像”;