2012-11-22 45 views
1

我有以下代碼打開了手電筒,閃光燈:閃光燈凍結AVCaptureSession

   AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
      if ([device hasTorch]) { 
       [self.session beginConfiguration]; 
       [device lockForConfiguration:nil]; 
       if(self.flashlightOn == YES) 
       { 
        [device setTorchMode:AVCaptureTorchModeOn]; 
        [device setFlashMode:AVCaptureFlashModeOn]; 
        NSLog(@"TurnFlashOn"); 
       } 
       else 
       { 
        [device setTorchMode:AVCaptureTorchModeOff]; 
        [device setFlashMode:AVCaptureFlashModeOff]; 
        NSLog(@"TurnFlashOff"); 
       } 

       [device unlockForConfiguration]; 
       [self.session commitConfiguration]; 

但如果代碼被稱爲我的會議似乎停止了,如果我刪除[設備setTorchMode:]部分的一切工作正常。 有沒有人知道這裏發生了什麼?

編輯: 它只是沒有IDE中運行應用程序時出現 - >自身

回答

3

我有同類問題的正面和背面攝像頭之間交換。它會在我第一次使用該設備時工作,然後每次都凍結「commitConfiguration」。看起來,正確的序列是:

  [self.session beginConfiguration]; 
      [device lockForConfiguration:nil]; 

      //*** Do your session configuration stuff here 

      [device unlockForConfiguration]; 
      [self.session commitConfiguration]; 

      //*** And this is what fixed the problem: 
      self.session startRunning]; 

希望這對你有好處!