2010-07-08 2 views
0
-(IBAction)turningFlashOn:(id)sender 
{ 
AVCaptureSession *captureSession = [[AVCaptureSession alloc] init]; 
AVCaptureDevice *videoCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
NSError *error = nil; 
AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoCaptureDevice error:&error]; 

if (videoInput) { 
    [captureSession addInput:videoInput]; 



    AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init]; 
    [videoOutput setSampleBufferDelegate:self queue:dispatch_get_current_queue()]; 
    [captureSession addOutput:videoOutput]; 
    [captureSession startRunning]; 
    videoCaptureDevice.torchMode = AVCaptureFlashModeOn; 
} 
} 

Je me demande d'utiliser lockForConfiguration mais il ne fonctionne pas ou peut-être que je l'utilise mal. Quelqu'un peut-il me dire ce que je fais de mal?Je veux juste tourner le flash pour coudre des années photo je suis en train d'utiliser AVCaptureDevice et AVCaptureFlashModeOn

Répondre

2
if([videoCaptureDevice lockForConfiguration]) { 
    [videoCaptureDevice setTorchMode:AVCaptureTorchModeOn]; 
    [videoCaptureDevice unlockForConfiguration]; 
} 
+0

Comment fermer-vous hors tension lorsque vous avez fini d'utiliser TourchModeOn –

+0

[videoCaptureDevice setTorchMode: AVCaptureTorchModeOff]; ou simplement de publier votre objet AVCaptureSession. Lequel est le plus approprié. – gnuchu

+0

Vous devriez probablement appeler '[session stopRunning];' avant de libérer la session. Voir mon post ici: http://stackoverflow.com/questions/3190034/turn-on-torch-flash-on-iphone-4/3367424#3367424 – iwasrobbed

1
- (void)flashLightOn { 


    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for (AVCaptureDevice *device in devices) { 
     if ([device hasFlash] == YES) { 

      [device lockForConfiguration:nil]; 
      [device setTorchMode:AVCaptureTorchModeOn]; 
      [device unlockForConfiguration]; 
     } 

    } 
} 

-(void)flashLightOff { 


    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
    for (AVCaptureDevice *device in devices) { 
     if ([device hasFlash] == YES) { 

      [device lockForConfiguration:nil]; 
      [device setTorchMode:AVCaptureTorchModeOff]; 
      [device unlockForConfiguration]; 
     } 

    } 

} 
Questions connexes