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

Я очень стараюсь эмулировать основную функциональность созданного при закрытых дверях приложение. К настоящему времени я стал застрявшим на 'касании, чтобы сфокусировать' функцию.

У меня есть 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];
     }
}

'камерой' является мой AVCaptureDevice, и это - неноль. Кто-то может, возможно, сказать мне, где я иду не так, как надо?

Подсказки и шиканье все приветствие.

M.

18
задан Martin Cowie 27 July 2010 в 16:58
поделиться

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

            }

        }        

    }

}
27
ответ дан 30 November 2019 в 08:21
поделиться