Я пытаюсь обрезать изображение из медиа галереи. Я могу получить доступ к изображению, запустить инструмент обрезки по умолчанию и даже сохранить результат обрезанного изображения.
Тем не менее, намерение, которое я использую, просто не вернет никаких результатов, если обрезка прошла успешно.
Мой ГЛАВНЫЙ метод:
// Crop photo intent.
Intent intent = new Intent("com.android.camera.action.CROP", null);
intent.setData(uri);
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
intent.putExtra("aspectX", aspectX);
intent.putExtra("aspectY", aspectY);
intent.putExtra("scale", scale);
intent.putExtra("return-data", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, createTempCroppedImageFile());
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
// Publish intent to crop picture.
activity.startActivityForResult(intent, activity.CROP_PHOTO_REQUEST_CODE);
& Ndash; Метод OnActivityResult () & ndash;
// Photo crop activity.
if (requestCode == CROP_PHOTO_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Log.d(TAG, "user cropped a photo");
signupScreen.setImage(new PhotoTool(this).getTempCroppedImageFileLocation());
} else
Log.d(TAG, "user cancelled photo crop");
}
Если я отменяю операцию обрезки, я получаю сообщение «Пользователь отменил обрезку фотографии». Но если я обрежу изображение, новое обрезанное изображение появится в целевом каталоге, но функция OnActivityResult () никогда не вызывается. Что дает?
Глядя на LogCat, я обнаружил, что каждый раз, когда я сохраняю обрезанное изображение, "JavaBinder" жалуется на "Ошибка транзакции подшивки". Я понимаю, что это как-то связано с памятью, но размер обрезанного файла составляет всего 24 КБ.