Search code examples
androidimage-capture

Captured image does not get saved on the device


I am trying to save a camera captured image on the device. But it does not get saved.

//---manifest

<uses-permission android:name="ANDROID.PERMISSION.CAMERA" />
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE" />

I use the following code:

    if (resultCode == RESULT_OK) {
        if (requestCode == CAMERA_REQUEST) {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

            try {
                Bitmap photo = (Bitmap) data.getExtras().get("data");
                File outFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "myimage.jpg");
                FileOutputStream fos = new FileOutputStream(outFile);
                photo.compress(Bitmap.CompressFormat.JPEG, 100, fos);

                fos.flush();
                fos.close();
                getImages();

Solution

  • See what i have done in my code for saving the captured image.

    /*************************** Camera Intent Start ************************/
    
                // Define the file-name to save photo taken by Camera activity
    
                String fileName = "Camera_Example.jpg";
    
                // Create parameters for Intent with filename
    
                ContentValues values = new ContentValues();
    
                values.put(MediaStore.Images.Media.TITLE, fileName);
    
                values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera");
    
                // imageUri is the current activity attribute, define and save it for later usage
    
                imageUri = getContentResolver().insert(
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    
                /**** EXTERNAL_CONTENT_URI : style URI for the "primary" external storage volume. ****/
    
    
                // Standard Intent action that can be sent to have the camera
                // application capture an image and return it.
    
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    
                intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
    
                startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    
                /*************************** Camera Intent End ************************/
    
    
            }
    

    onActivityResult method is here:

     @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
    
            if (resultCode == RESULT_OK) {
    
                /*********** Load Captured Image And Data Start ****************/
    
                String imageId = convertImageUriToFile(imageUri, CameraActivity);
    
    
                //  Create and excecute AsyncTask to load capture image
    
                new LoadImagesFromSDCard().execute("" + imageId);
    
                /*********** Load Captured Image And Data End ****************/
    
    
            } else if (resultCode == RESULT_CANCELED) {
    
                Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show();
            } else {
    
                Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show();
            }
        }
    }