Le solicito que ponga un código de muestra y capturas de pantalla de producción de su aplicación que está desarrollando, porque deseo saber cuáles son sus estados. Editará la respuesta en consecuencia.
Sin embargo, estoy escribiendo una respuesta genérica, basada en la suposición de que su cambio en los Estados es la orientación de la pantalla, es decir, si su cámara toma una fotografía en horizontal, la misma imagen debería aparecer al girar el retrato. Espero que ayude.
(Al abrir SimpleCameraIntentFragment.java, encontrará los siguientes métodos (tomados de la documentación de Simple Camera de Google))
- ¿Cuál es la historia detrás del método UserManager.isUserAGoat () en Android 4.2?
- ¿Qué hace un desarrollador de framework Android? ¿Desarrollan el marco en sí o desarrollan aplicaciones de Android usando los marcos?
- Python para el desarrollo de aplicaciones de Android, ¿es una buena opción?
- ¿Ya hay algún dron en Android?
- ¿Cómo ganan dinero las aplicaciones gratuitas de Android en Google Play Store?
onSaveInstanceState()
, llamado para recuperar el estado por instancia de una actividad antes de matarlo, de modo que el estado pueda restaurarse en onCreate(Bundle)
o onRestoreInstanceState(Bundle)
(el Bundle poblado por este método se pasará a ambos).
Este método se llama antes de que una actividad pueda ser eliminada para que cuando regrese en algún momento en el futuro pueda restaurar su estado.
Básicamente, después de capturar la imagen, la estoy almacenando en una ruta y extrayendo esa ruta en una variable disparando el onSaveInstanceState
y luego restaurando de acuerdo a mi tiempo libre y caprichos y fantasías en onRestoreInstanceState
// Almacenamiento para componentes de URI de imagen de cámara privada Cadena estática final
CAPTURED_PHOTO_PATH_KEY = “mCurrentPhotoPath”;
Cadena estática final privada CAPTURED_PHOTO_URI_KEY = “mCapturedImageURI”;
// Requerido para las operaciones de la cámara para guardar el archivo de imagen en el currículum.
Private String mCurrentPhotoPath = nulo;
Uri privado mCapturedImageURI = nulo;
@Anular
public void onSaveInstanceState (Bundle savedInstanceState) {
if (mCurrentPhotoPath! = null) {
savedInstanceState.putString (CAPTURED_PHOTO_PATH_KEY, mCurrentPhotoPath);
}
if (mCapturedImageURI! = null) {
savedInstanceState.putString (CAPTURED_PHOTO_URI_KEY, mCapturedImageURI.toString ());
}
super.onSaveInstanceState (savedInstanceState);
}
@Anular
nulo protegido en RestoreInstanceState (Bundle savedInstanceState) {
if (savedInstanceState.containsKey (CAPTURED_PHOTO_PATH_KEY)) {
mCurrentPhotoPath = savedInstanceState.getString (CAPTURED_PHOTO_PATH_KEY);
}
if (savedInstanceState.containsKey (CAPTURED_PHOTO_URI_KEY)) {
mCapturedImageURI = Uri.parse (savedInstanceState.getString (CAPTURED_PHOTO_URI_KEY)); }
super.onRestoreInstanceState (savedInstanceState);
}
mCurrentPhotoPath
es el URI donde está almacenando la imagen capturada en su tarjeta SD y en onSaveInstanceState()
, debe pasar solo ese URI, eso es todo. Y más tarde, restaura la misma ruta y, en la interfaz, el usuario aún puede ver la imagen, a pesar de los cambios en las Actividades.
Puede ver más de esto en esto en Ultimate Android Camera Guide y el archivo Camera.java en ese Git aquí rexstjohn / UltimateAndroidCameraGuide