我正在使用ZXing小部件来扫描QRCode。如果用户从iOS设置禁用了摄像头访问权限,我的应用程序将会崩溃:
*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* 无法添加,因为该设备不支持AVCaptureSessionPresetMedium。使用 - [AVCaptureDevice支持AVCaptureSessionPreset:]。'
有没有办法尝试提示用户将其重新打开?
由于
利奥
答案 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;
}
}