0

I'm trying to get crop image working on Samsung s4 but it's not showing the crop screen.

This is the code that I'm using.

 private void openCamera() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT,
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
    // ******** code for crop image
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 3);
    intent.putExtra("aspectY", 4);
    intent.putExtra("outputX", 180);
    intent.putExtra("outputY", 220);

    try {

        intent.putExtra("return-data", true);
        startActivityForResult(intent, 1);

    } catch (ActivityNotFoundException e) {
        // Do nothing for now
        String s = e.getMessage();
        String test = e.getLocalizedMessage();
    }
}
Shaeldon
  • 873
  • 4
  • 18
  • 28
dogwasstar
  • 852
  • 3
  • 16
  • 31

1 Answers1

1

Intent which you are using is for capturing image. You need to first capture image and then apply crop on it. Yo can do like this.

private void openCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT,
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());

try {

    intent.putExtra("return-data", true);
    startActivityForResult(intent, 1);

} 
catch (ActivityNotFoundException e) {
    // Do nothing for now
        }
}

onActivityResult where you get captured image. apply crop on that.

private void performCrop() {
    try {
        Intent cropIntent = new Intent("com.android.camera.action.CROP");           cropIntent.setDataAndType(mUri, "image/*");
        // set crop properties
        cropIntent.putExtra("crop", "true");
        // indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        // indicate output X and Y
        cropIntent.putExtra("outputX", 150);
        cropIntent.putExtra("outputY", 150);
        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, 12);
    }
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        // display an error message
        String errorMessage = "Whoops - your device doesn't support the crop action!";
        Toast.makeText(Signature.this, errorMessage, Toast.LENGTH_SHORT)
                .show();

    }
}
justDroid
  • 343
  • 2
  • 9