如果在iOS设置中禁用了摄像头,则在AVCaptureDeviceInput处崩溃

时间:2012-07-31 03:35:08

标签: ios cocoa-touch

我正在使用ZXing小部件来扫描QRCode。如果用户从iOS设置禁用了摄像头访问权限,我的应用程序将会崩溃:

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* 无法添加,因为该设备不支持AVCaptureSessionPresetMedium。使用 - [AVCaptureDevice支持AVCaptureSessionPreset:]。'

有没有办法尝试提示用户将其重新打开?

由于

利奥

2 个答案:

答案 0 :(得分:1)

我在iPad 1上遇到了同样的错误,我猜是因为iPad1没有相机。我这样做是为了解决崩溃问题:

if([[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAVCaptureSessionPreset:AVCaptureSessionPresetMedium]){
    // add code to open ZXingWidgetController
} else {
    // show alert that device does not support
}

答案 1 :(得分:0)

您可以使用以下代码,它兼容iOS 5+

- (BOOL)backCameraIsReady
{
    AVCaptureDevice *inputDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    NSError *inputDeviceError = nil;
    AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&inputDeviceError];
    if (!captureInput) {
        return NO;
    } else {
        return YES;
    }
}