18

内蔵カメラアプリの基本機能をエミュレートしようと頑張っています。これまでのところ、「タップしてフォーカス」機能に固執しています。

UIViewを1本の指でタップすると、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であり、nilではありません。誰かが私がどこで間違っているのか教えてもらえますか?

手がかりとブーイングはすべて大歓迎です。

M。

4

1 に答える 1

27

このスニペットはあなたを助けるかもしれません...あなたが焦点を合わせ、タップしながら露出を変更し、フラッシュを設定し、カメラを交換することを可能にするアップルによって提供されるCamDemoがあります、それはあなたができるかどうかわからない、カメラアプリをかなりうまくエミュレートしますそれは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];

            }

        }        

    }

}
于 2010-07-27T18:39:06.777 に答える