he implementado una cámara utilizando el marco AVFoundation proporcionada en IOS 4 5 &, pero he estado experimentando un problema incompatibles con la función captureStillImageAsynchronouslyFromConnection:completionHandler:
donde el bloque controlador de finalización no se llama. El sonido del obturador no se dispara y la vista previa se congela en esta situación.iOS AVFoundation captureStillImageAsynchronouslyFromConnection: completionHandler: Colgando indefinidamente
He seguido tanto Apple (WWDC 2010 & videos 2011) como las guías que no son de Apple (publicaciones blog y SO) para implementar una captura de imagen fija en resolución de foto con poca o ninguna mejora. He sido capaz de reproducir tanto constantemente bajo las siguientes condiciones :
- Si fijo parpadea a
AVCaptureFlashModeAuto
y tomar una foto con poca luz, se cuelga y nunca se ejecuta el bloque de terminación. El flash se dispara, pero el sonido del obturador no. Con el mismo código, puedo tomar una fotografía con luz normal, donde el disparador se dispara, el flash no y el bloque de finalización se ejecuta. - Si no configuro
flashMode
o lo desactivo, puedo tomar algunas fotos, pero después de un número pequeño (entre 1 y 5, por lo general) el bloque de finalización deja de disparar. Para mayor claridad, un escenario podría ser:- tomar una foto y la vista en la pantalla de confirmación
- Volver a tener pantalla de fotos
- Repetir 1 & 2 un par de veces
- Hit tomar una foto y se cuelga antes del bloque de finalización.
Mi Implementación
tengo la interfaz se maneja en un ViewController y clase separada para manejar todas las cosas AVFoundation. Una variable de instancia de la clase separada que maneja las cosas de AVFoundation está en ViewController. Es diferente a las implementaciones de ejemplo, pero no veo por qué debería causar este tipo de error ocasional.
Más observaciones
- Incluso cuando la comprobación
[stillImageOutput isCapturingStillImage]
, continuará para volver falsa y continuar para ejecutar la función captureStillImageAsynchronouslyFromConnection
Si me cambio a otra aplicación, bloquear el teléfono, tomar ciertas acciones en la aplicación, o toque el botón "Tomar foto" un millón de veces, puedo obtener el bloque de finalización para devolver un error. Son diferentes según la acción. Los más comunes son 11800, 11801 y 11830. Parecen no estar relacionados con el hang.- He dejado que nuestro teléfono de prueba (iPhone 4 GSM) repose durante una hora para ver si finalmente se procesaría. No dados.
Me encantaría saber si hay algo que me puede estar perdiendo, una propiedad que no se ha solucionado, o un problema conocido con un problema.
Gracias.
(Vi una publicación similar, pero ninguna de las respuestas resolvió mi problema. Necesito Photo res en la aplicación.A modo de referencia: iPhone SDK 4 AVFoundation - How to use captureStillImageAsynchronouslyFromConnection correctly?)