2010-07-27 9 views
18

Estoy tratando de emular la funcionalidad básica de la aplicación integrada de la cámara. Hasta ahora, me he quedado atrapado en la función "tocar para enfocar".Emular las aplicaciones de la cámara 'toque para enfocar'

Tengo un UIView del cual estoy recopilando eventos de UITouch cuando se toca un solo dedo en el UIView. Se llama a este método pero el foco de la cámara & no cambia la exposición.

-(void)handleFocus:(UITouch*)touch 
{ 
    if([camera lockForConfiguration:nil]) 
    {  
      CGPoint location = [touch locationInView:cameraView]; 

      if([camera isFocusPointOfInterestSupported]) 
       camera.focusPointOfInterest = location; 

      if([camera isExposurePointOfInterestSupported]) 
       camera.exposurePointOfInterest = location; 


      [camera unlockForConfiguration]; 
      [cameraView animFocus:location]; 
    } 
} 

'cámara' es mi AVCaptureDevice & es no nula. ¿Puede alguien decirme dónde me estoy equivocando?

Pistas & abucheos todos bienvenidos.

M.

+1

Asimismo, recuerda que tanto exposurePointOfInterest y focusPointOfInterest son CGPoints entre (0,0) y (1,1). Independientemente de la orientación del dispositivo, (0,0) es la esquina superior izquierda y (1,1) es la esquina inferior derecha del dispositivo en la orientación Horizontal derecha. Entonces, usar 'camera.focusPointOfInterest = location' no le dará los resultados que desea. –

Respuesta

27

Este fragmento puede ayudarle a ... hay una CamDemo proporcionada por manzana flotando alrededor de la cual le permite enfocar, cambiar la exposición mientras que golpea ligeramente, ajuste de flash, intercambio y más cámaras, que emula la cámara aplicación bastante bien, no estoy seguro si usted será capaz de encontrar, ya que era parte de la WWDC, pero si te dejo algunas dirección de correo electrónico de los comentarios que usted puede enviar el código de ejemplo ...

- (void) focusAtPoint:(CGPoint)point 

{ 

    AVCaptureDevice *device = [[self videoInput] device]; 

    if ([device isFocusPointOfInterestSupported] && [device isFocusModeSupported:AVCaptureFocusModeAutoFocus]) { 

     NSError *error; 

     if ([device lockForConfiguration:&error]) { 

      [device setFocusPointOfInterest:point]; 

      [device setFocusMode:AVCaptureFocusModeAutoFocus]; 

      [device unlockForConfiguration]; 

     } else { 

      id delegate = [self delegate]; 

      if ([delegate respondsToSelector:@selector(acquiringDeviceLockFailedWithError:)]) { 

       [delegate acquiringDeviceLockFailedWithError:error]; 

      } 

     }   

    } 

} 
+0

Estaría muy contento por ese código fuente. Atrápame en Codehammer suremail información. Gracias de nuevo. –

+0

bien, enviado. – Daniel

+3

@Martin Cowie - En realidad, el código fuente está disponible como parte de los videos de WWDC 2010. Simplemente inicie sesión para obtener los videos, vaya a iTunes, y un enlace para descargar el código de muestra aparecerá en la esquina superior derecha: http://developer.apple.com/videos/wwdc/2010/ Estará buscando la AVCam. y las aplicaciones de muestra AVCamDemo, creo. –

Cuestiones relacionadas