Problema de imagen de recorte cuando se toma de la cámara

A continuación se muestra mi code snippet relacionado en el que se redirecciona a la cropping app después de que la imagen se ha disparado desde la cámara. Usualmente seguí este ejemplo . Pero durante la fase / momento entre la imagen tomada de la cámara y haciendo que esté disponible en la aplicación de cultivo, se muestra la carga continua y hace que mi aplicación terriblemente indiferente. Si esto sucede al menos una vez, cada vez que abra la aplicación, sólo muestra la carga.

Este problema no se produce en one scenario -> Cuando no muevo mi dispositivo (es decir, sólo cuando no ocurre ninguna orientación de pantalla). ¿Puede alguien sugerirme para evitar este problema?

 public void shotFromCamera(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageCaptureUri); try { intent.putExtra("return-data", true); startActivityForResult(intent, PICK_FROM_CAMERA); } catch (ActivityNotFoundException e) { e.printStackTrace(); } } protected void onActivityResult(int requestCode, int resultCode,Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK && requestCode == PICK_FROM_CAMERA){ doCrop(); } else if(resultCode == RESULT_OK && requestCode == CROP_FROM_CAMERA) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photoBitmap = extras.getParcelable("data"); imageView.setImageBitmap(photoBitmap); if(mImageCaptureUri != null) { File f = new File(mImageCaptureUri.getPath()); if (f.exists()) f.delete(); } mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+ "/MyApp", "avatar" + String.valueOf(System.currentTimeMillis()) + ".jpg")); File file = new File(mImageCaptureUri.getPath()); selectedImagePath = mImageCaptureUri.getPath(); Log.d("pic1 ","pic to be created: "+selectedImagePath); OutputStream fOut = null; try { fOut = new FileOutputStream(file); photoBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); fOut.flush(); fOut.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } } } private void doCrop() { final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>(); Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/*"); List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 ); int size = list.size(); if (size == 0) { Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show(); return; } else { intent.setData(imageCaptureUri); intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); if (size == 1) { Intent i = new Intent(intent); ResolveInfo res = list.get(0); i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); startActivityForResult(i, CROP_FROM_CAMERA); } } 

Para aclarar mi problema, había ejecutado el código fuente en ese ejemplo, ya que es, el mismo problema sucede. Había corrido otro par de ejemplos que redirigir a la aplicación de recorte. El mismo problema ocurre mientras se cambia la orientación durante la fase explicada anteriormente.

PD : Si alguien tiene un ejemplo de trabajo que seguramente funciona incluso en cambios de orientación, estaría encantado de aceptarlo como una respuesta.

Usted puede ir con esto-

  1. Obtener el mapa de bits de URI especificado, es decir, una imagen de tamaño completo utilizando

    photo = android.provider.MediaStore.Images.Media.getBitmap(cr, Uri.fromFile(imageCaptureUri));

  2. Utilice Bitmap.CompressFormat.PNG mientras comprime la imagen

  3. Crear un mapa de bits a escala utilizando

    photo= Bitmap.createScaledBitmap(background, YourWidth, YourHeight, true);

  4. Esta es su imagen escalada (recortada).

Compruebe el valor de imageCaptureUri! = intent.setData(imageCaptureUri); antes de la línea intent.setData(imageCaptureUri); En doCrop()

Editar

Primero guarde el resultado de la cámara en el archivo y pase el archivo para recortar la aplicación

 intent.setData(Uri.fromFile(new File(path))); 
  • ¿Cómo agregar una imagen a la galería del emulador en el estudio android?
  • ExifInterface JHEAD no puede abrir el error (android)
  • Botón de exploración de imágenes en la actividad de Android
  • Aplicación "espectador" de la imagen de Android
  • Obtener imagen ThumbNail en Android
  • Efficient Way para almacenar imágenes en android
  • Android: cambia el tamaño de la imagen en la galería según la resolución del dispositivo
  • Página de Android / borde detectar y transformar la página. Convertir a B / N tiff
  • Android - cómo comprimir o reducir una imagen?
  • ¿Cómo recortar una imagen cuyo URI se conoce en Android?
  • imágenes de video enviadas desde el servicio web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.