studio intent custom app java android camera android-camera

java - intent - onactivityresult camera android



Android ACTION_IMAGE_CAPTURE veces no se llama a ActionResult (3)

¿Es posible que su actividad sea asesinada y esa es la razón por la cual onActivityResult no se está ejecutando? Cuando la cámara Intent regrese, normalmente onActivityResult seguido por onResume se ejecutará. Ponga una declaración de registro en sus métodos onPause y onResume y verifique la secuencia de ejecución.

En nuestro código estamos usando el método getPhoto que se ve así:

public void getPhoto(View view) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri); startActivityForResult(intent, CAPTURE_IMAGE); }

Y onActivityResult:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "Came"); if (resultCode == RESULT_OK) { if (requestCode == CAPTURE_IMAGE) { try { captureFile = new File(getCaptureFilePath()); captureUri = Uri.fromFile(captureFile); Bitmap scaledBitmap = decodeFileAndResize(captureFile); saveResizedAndCompressedBitmap(scaledBitmap); Bitmap rotatedBitmap = convertToRotatedBitmap(scaledBitmap); driverPhoto.setImageBitmap(rotatedBitmap); Log.w(TAG, "Before recycle"); if (rotatedBitmap != scaledBitmap) { scaledBitmap.recycle(); scaledBitmap = null; System.gc(); } Log.w(TAG, "After recycle"); } catch (IOException e) { BugSenseHandler.log(TAG, e); } } } }

A veces, cuando onActivityResult ''Ok'', onActivityResult no se llama ( Came not wrote). ¿Qué esta mal en mi codigo?

EDITAR: 12-04 12:43:36.040: INFO/WindowManager(145): WIN DEATH: Window{40839990 com.skalar/com.skalar.activities.RegisterActivity paused=false} aparece en el código cuando onActivityResult no se llama.


I faced same problem , once check have you put any tag related to History ?

No coloque android: noHistory = etiqueta "verdadera" en el manifiesto si usa android: noHistory = "true" en su actividad dentro del manifiesto, se eliminará de la pila después de la parada.

Nota: si está utilizando la actividad de tabulación, entonces tampoco debería usar android: noHistory = "true" o simplemente ponga android: noHistory = "false" en la actividad dentro de manifest.

Puede ser que mi explicación es incorrecta, pero tengo solución.


de acuerdo con: https://groups.google.com/forum/#!topic/android-developers/aihsOU8uAzU

The method that takes care of the capture only returns correctly (using the finnish() method, I think) if the picture can be saved correctly in the file specified by that URI. If there''s an exception (such as an IO exception) it will be captured and nothing will be done, so you''ll never know. I believe that ''myTestFile'' is a file that can only be read/written within your own application and that''s why image_capture can''t write to it.

Entonces el problema es

captureFile = new File(getCaptureFilePath()); intent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri);

Puede resolver el problema configurando captureFile el valor devuelto de este método:

private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File directory = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "your subdirectory for Picture directory"); if(!directory.exists() && !directory.mkdir()) return null; File image = File.createTempFile( imageFileName, /* prefix */ ".jpg", /* suffix */ directory /* directory */ ); // Save a file: path for use with ACTION_VIEW intents return image; }