ios AVFoundation tippen, um zu fokussieren

Ich versuche, eine Kamera-app, die würde handeln wie die Standard-Kamera-app, mehr oder weniger.
Die Sache, die ist nicht für mich arbeiten, in dem moment, tap to focus. Ich möchte die Kamera zu konzentrieren und tun, was es tut, auf meine berührten Punkt, ebenso wie die eigentliche Kamera-app tut.

Hier mein viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Session
    _session = [[AVCaptureSession alloc] init];
    _session.sessionPreset = AVCaptureSessionPresetPhoto;

    //Input
    _videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    _videoInput = [AVCaptureDeviceInput deviceInputWithDevice:_videoDevice error:nil];

    //Output
    _frameOutput = [[AVCaptureVideoDataOutput alloc] init];
    _frameOutput.videoSettings = [NSDictionary dictionaryWithObject:AVVideoCodecJPEG forKey:AVVideoCodecKey];

    [_frameOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
    [_session addInput:_videoInput];
    [_session addOutput:_frameOutput];
    [_session startRunning];
};

Und hier ist die Methode, die sollte meine Kamera Fokus Zeug auf klicken Sie auf.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    [touches enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
        UITouch *touch = obj;
        CGPoint touchPoint = [touch locationInView:touch.view];
        focusLayer.frame = CGRectMake((touchPoint.x-25), (touchPoint.y-25), 50, 50);

        if ([_videoDevice isFocusPointOfInterestSupported]) {
            NSError *error;
            if ([_videoDevice lockForConfiguration:&error]) {
                [_videoDevice setFocusPointOfInterest:touchPoint];
                [_videoDevice setExposurePointOfInterest:touchPoint];

                [_videoDevice setFocusMode:AVCaptureFocusModeAutoFocus];
                if ([_videoDevice isExposureModeSupported:AVCaptureExposureModeAutoExpose]){
                    [_videoDevice setExposureMode:AVCaptureExposureModeAutoExpose];
                }
                [_videoDevice unlockForConfiguration];
            }
        }


        //NSLog(@"x = %f, y = %f", touchPoint.x, touchPoint.y);
    }];
}

Nichts wirklich passiert, wenn ich auf dem Bildschirm klicken.

InformationsquelleAutor der Frage spacecash21 | 2012-10-26

Schreibe einen Kommentar