0

We started the camera app from our app like this:

    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    String timeStamp = "001";

    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MymhiImages");
    imagesFolder.mkdirs();

    File image = new File(imagesFolder, filename + ".png");
    Uri uriSavedImage = Uri.fromFile(image);

And attempted to catch the return from the camera like this:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        InputStream stream = null;
        if (requestCode == REQUEST_CODE && resultCode == AppCompatActivity.RESULT_OK)
            try {
                // recyle unused bitmaps
                if (bitmap != null) {
                    bitmap.recycle();
                }
                stream = getContentResolver().openInputStream(data.getData());
                bitmap = BitmapFactory.decodeStream(stream);

                imageView.setImageBitmap(bitmap);

                File dir = new File(Environment.getExternalStorageDirectory().toString() + "/mhi/");
                if (!dir.exists())
                    dir.mkdir();

                String path = Environment.getExternalStorageDirectory().toString() + "/mhi/" + filename + ".png";
                OutputStream out = null;
                File imageFile = new File(path);

                try {
                    out = new FileOutputStream(imageFile);
                    // choose JPEG format
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
                    out.flush();
                } catch (FileNotFoundException e) {
                    // manage exception
                } catch (IOException e) {
                    // manage exception
                } finally {

                    try {
                        if (out != null) {
                            out.close();
                            //jsi.showMsg("Saved Successfully");
                            Toast.makeText(getApplicationContext(), "Saved Successfully", Toast.LENGTH_LONG).show();
                        }

                    } catch (Exception exc) {
                    }

                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {

                if (stream != null)
                    try {
                        stream.close();
                    } catch (IOException ie) {
                        ie.printStackTrace();
                    }

            }
    }

Forgive us, if there is too much code.

Our problem is that the image gets saved to disk but is not displayed in the ImageView. What have we missed?

1

1 Answer 1

1

ACTION_IMAGE_CAPTURE does not return a Uri. data.getData() is useless. Either:

  • Pass EXTRA_OUTPUT in your ACTION_IMAGE_CAPTURE request, in which case you know where the image should be stored, or

  • Use data.getExtra("data") to get a thumbnail Bitmap, which is returned in cases where you do not provide EXTRA_OUTPUT

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.