2010-10-18 27 views
5

Estoy usando la cámara del teléfono en una aplicación de Android para tomar una foto. Estoy usando Intentos de usar la aplicación de la cámara incorporada y estoy usando el siguiente código:Usar la cámara del teléfono a través de la intención: ¿la actividad nunca vuelve?

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FILEPATH))); 
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE); 

Trabaja muy bien y la cámara se conecta. Puedo tomar una foto y el teléfono me presenta tres opciones: Cancelar, Volver a tomar, OK. Los primeros dos trabajos, al presionar cancelar, el usuario regresa a la aplicación, pero al presionar OK y no ocurre nada. Aparentemente onActivityResult no se está llamando, y la cámara simplemente permanece en la pantalla. Nada en el depurador tampoco.

Ejecutar la aplicación en un Nexus One con Android 2.2.1. Mismo problema en el emulador con Android 2.0.

Editar: Probado en un HTC Desire con Android 2.2 con interfaz de usuario Sense de HTC: funciona perfectamente. Nada en el emalator ni Google N1.

Edit2: parece que la imagen actividad aquiring HTC Desire funciona mejor en el sentido de que regresara, pero no tiene en cuenta la EXTRA_OUTPUT -setting y devuelve sólo una pequeña imagen en el onActivityResult -call. Verificando en la consola ddms mientras el teléfono está conectado a la computadora, veo que el teléfono está almacenando la imagen en la tarjeta SD, pero la ruta no se transfiere a mi aplicación. Está empezando a parecer que no hay una manera confiable de usar la intención de la cámara, y recuperar una imagen de un tamaño razonable. Malo malo malo.

Respuesta

1

Después de un poco de investigación, pruebas y pura suerte, pude resolver este problema.

Si la opción EXTRA_OUTPUT para Intent contiene un URI de archivo que apunta a la memoria interna del dispositivo, la llamada fallará. Cómo falla, depende del dispositivo. El HTC Desire funciona bien en la superficie, pero no puede devolver la imagen de tamaño completo. Google N1, por otro lado, se niega a abandonar la actividad de la cámara.

Cuando cambié el URI de archivo para apuntar a la tarjeta de memoria, funcionó perfectamente para Desire y Google N1.

Resumiendo: la ruta para almacenar la imagen de tamaño completo DEBE apuntar a la tarjeta SD.

+0

¿Así que no hay forma de evitar la tarjeta SD? Si no está disponible, ¿no puedes obtener una imagen a tamaño completo? Estoy enfrentando un problema similar. Aquí está mi publicación http://stackoverflow.com/questions/4632231/is-herehere-any-way-to-store-full-size-image-returned-from-camera-activity-in-intern – Pritam

Cuestiones relacionadas