2016-06-09 44 views
1

我從App Review收到了一個崩潰日誌,其中我的相機視圖中將閃光模式設置爲「Off」的行導致崩潰。這裏是代碼片段:setFlashMode會導致Apple審閱者崩潰

let cameraInput = try AVCaptureDeviceInput(device: self.backCameraDevice) 
      do { 
       try cameraInput.device.lockForConfiguration() 

       if cameraInput.device.isExposureModeSupported(AVCaptureExposureMode.ContinuousAutoExposure) { 
        cameraInput.device.exposureMode = AVCaptureExposureMode.ContinuousAutoExposure 
       } 

       if cameraInput.device.isFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus) { 
        cameraInput.device.focusMode = AVCaptureFocusMode.ContinuousAutoFocus 
       } 


       // CRASH HERE 
       self.backCameraDevice.flashMode = .Off 


       cameraInput.device.unlockForConfiguration() 
      } catch { 
      } 

加載相機視圖時設置閃光模式的正確方法是什麼?

+0

你在'catch'中做了什麼'try'?您是否在iPad上測試過您的應用程序(即沒有閃光燈的設備)? – Paulw11

+0

哦,你提出一個好點。也許我應該像在其他設置中一樣在其中添加支票。用一個例子更新我的問題。 – cb428

+0

這聽起來像是一個好的第一步;你應該檢查'isFlashModeSupported'和/或'hasFlash' – Paulw11

回答

-1

可以使用2路

1)

let avDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 

    // check if the device has torch 
    if avDevice.hasTorch { 
     // lock your device for configuration 
     do { 
      let abv = try avDevice.lockForConfiguration() 
     } catch { 
      print("aaaa") 
     } 

     // check if your torchMode is on or off. If on turns it off otherwise turns it on 
     if avDevice.torchActive { 
      avDevice.torchMode = AVCaptureTorchMode.Off 
     } else { 
      // sets the torch intensity to 100% 
      do { 
       let abv = try avDevice.setTorchModeOnWithLevel(1.0) 
      } catch { 
       print("bbb") 
      } 
     // avDevice.setTorchModeOnWithLevel(1.0, error: nil) 
     } 
     // unlock your device 
     avDevice.unlockForConfiguration() 
    } 

2)

let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 
    if (device.hasTorch) { 
     do { 
      try device.lockForConfiguration() 
      if (device.torchMode == AVCaptureTorchMode.On) { 
       device.torchMode = AVCaptureTorchMode.Off 
      } else { 
       try device.setTorchModeOnWithLevel(1.0) 
      } 
      device.unlockForConfiguration() 
     } catch { 
      print(error) 
     } 
    } 
0

您鎖定/解鎖cameraInput.device但你設置backCameraDevice閃光燈。 你應該這樣做:

cameraInput.device.flashMode = .Off