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;
}