Android 用相机拍照,然后裁剪

Android 用相机拍照,然后裁剪,android,android-intent,android-camera,Android,Android Intent,Android Camera,我想能够用相机拍一张照片。我这样做,效果很好: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(intent, CAMERA_REQUEST); 在这是成功的,我希望用户能够立即查看图像,并能够裁剪 我可以这样做: Intent c

我想能够用相机拍一张照片。我这样做,效果很好:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
 startActivityForResult(intent, CAMERA_REQUEST);
在这是成功的,我希望用户能够立即查看图像,并能够裁剪

我可以这样做:

        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        cropIntent.setDataAndType(Uri.fromFile(new File(file.toString())), "image/*");
        cropIntent.putExtra("crop", "true");
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        cropIntent.putExtra("outputX", 256);
        cropIntent.putExtra("outputY", 256);
        cropIntent.putExtra("return-data", true);
        startActivityForResult(cropIntent, CAMERA_REQUEST);
如何合并这两个任务,使它们一个接一个地发生?我必须有两个
startActivityForResult
?应该合并吗?还是说croppin ginfo应该在正常范围内

    getActivity();
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {


                    // Cropping code here? another intent?

        iPP.setImageBitmap(BitmapFactory.decodeFile(file.toString()));
        imagePath = file.toString();
        scaleImage();
        new UploadImage().execute();
    }

创建一个名为CAMERA_CROP的新常量

拍照后开始活动时,请发送相机裁剪请求代码

if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
    ...
    startActivityForResult(cropIntent, CAMERA_CROP);
}
if (requestCode == CAMERA_CROP && resultCode == Activity.RESULT_OK) {
...
}
当您从裁剪活动返回时,请处理请求代码

if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
    ...
    startActivityForResult(cropIntent, CAMERA_CROP);
}
if (requestCode == CAMERA_CROP && resultCode == Activity.RESULT_OK) {
...
}