2011-12-27 16 views
19

Estoy tratando de tomar varias fotos utilizando la aplicación de cámara predeterminada del dispositivo lanzada con intención (MediaStore.ACTION_IMAGE_CAPTURE). Con los dispositivos con los que estoy probando, la cámara se lanza, toma una foto, pide confirmación y luego regresa a mi actividad donde proceso el resultado.¿Cómo tomar varias fotos antes de desestimar la intención de la cámara?

He considerado utilizar las devoluciones de llamada del receptor de difusión o un observador de contenido; sin embargo, no puedo encontrar una manera de iniciar la cámara y mantenerla activa hasta que el usuario termine. Si es posible, deseo evitar desarrollar una aplicación de cámara personalizada.

La razón por la que debo hacer esto es porque los usuarios generalmente necesitan tomar varias fotos seguidas, y en algunos dispositivos el tiempo de inicio de la cámara es de más de 5 segundos, y los usuarios que usan el software toman 10-30 fotos consecutivamente ; no solo eso, sino que necesitan control sobre varios parámetros de la cámara.

¿Hay alguna manera de iniciar la intención de la cámara y solo regresar a mi actividad una vez que el usuario sale de la aplicación de la cámara?

Respuesta

18

he descubierto a través de la documentación del SDK que hay una acción intención alternativo para la cámara del dispositivo que pone en marcha la cámara en el modo de imagen fija y no sale hasta que el usuario ha terminado con la actividad:

Intent intent = new Intent(
    MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
this.startActivity(intent); 

Junto con un ContentObserver esto era exactamente lo que necesitaba lograr.

+0

funciona bien, pero cuando estoy presionando la tecla hacia atrás, obtengo una excepción de puntero nulo. ¿Puede sugerirme cómo puedo deshacerme de ella? – Meghna

+0

@Chris Hutchinson: está tomando múltiples imágenes. pero ¿cómo obtener la ruta de la imagen capturada o fileName en nuestra aplicación? – John

+0

Esto fue hace bastante tiempo, pero el mejor método que encontré fue el uso de ContentObserver para detectar cuándo se creó una imagen. Si no encuentra eso lo suficientemente confiable, puede verificar si la ruta está dentro del directorio de la cámara del teléfono. Puede haber una API para ubicar este directorio. No puedo recordar –

Cuestiones relacionadas