Подтвердить что ты не робот

Эмуляция приложения приложений камеры для фокусировки '

Я стараюсь подражать базовой функциональности встроенного приложения для камеры. До сих пор я застрял в функции "нажмите, чтобы сфокусироваться".

У меня есть UIView, из которого я собираю события UITouch, когда один палец используется в UIView. Этот следующий метод вызывается, но фокус камеры и экспозиция не изменяются.

-(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];
     }
}

'camera' - моя AVCaptureDevice, и она не равна нулю. Может ли кто-нибудь, возможно, сказать мне, где я ошибаюсь?

Подсказки и приветствия приветствуются.

М.

4b9b3361

Ответ 1

Этот фрагмент может помочь вам... Существует CamDemo от Apple, плавающий вокруг, что позволяет вам сфокусироваться, изменять экспозицию при нажатии, установить флеш-память, подкачки и многое другое, она очень хорошо эмулирует приложение камеры, не уверен, что вы сможете найти его с тех пор, как он был частью wwdc, но если вы оставите какой-то адрес электронной почты в комментариях, я могу отправить вам образец кода...

- (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];

            }

        }        

    }

}