How can I solve this problem?
File
, AFAIK, does not understand file:///
URL formats, which is what you will get from capturedImageURI.toString()
. Rather than regenerating the File
, use the one you already created.
Question
I am launching the camera to capture a picture, which is stored in a new file in a specific folder, in the external storage.
The problem is that when I try to decode the image from the file using BitmapFactory.decodeFile()
in my onActivityResult()
method, the returned image is null
. Is this because the file is not yet complete (i.e. the process of the camera has not finished to save the image)? How can I solve this problem?
Here is the code with which I am launching the camera:
private void launchCamera() {
//create folder
File imagesFolder = new File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
Consts.MEDIA_EXTERNAL_FOLDER);
if(!imagesFolder.exists())
imagesFolder.mkdirs();
String fileName = "pic_"+Consts.CAMERA_DATE_FORMAT.format(new Date());
File image = null;
try {
image = File.createTempFile(fileName, ".jpg", imagesFolder);
} catch(IOException e) {
Log.e(TAG, "Error creating new file.");
}
capturedImageURI = Uri.parse(image.getAbsolutePath());
//launch camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageURI);
startActivityForResult(intent, CAMERA_ACTION);
}
And this is when I get the image in the onActivityResult()
:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_ACTION:
getContentResolver().notifyChange(capturedImageURI, null);
File f = new File(capturedImageURI.toString());
decodedBitmap = Helper.decodeSampledBitmapFromResource(filePath);
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(decodedBitmap);
break;
}
La solution
How can I solve this problem?
File
, AFAIK, does not understand file:///
URL formats, which is what you will get from capturedImageURI.toString()
. Rather than regenerating the File
, use the one you already created.