如果在 iOS 设置中禁用相机,则在 AVCaptureDeviceInput 崩溃
Posted
技术标签:
【中文标题】如果在 iOS 设置中禁用相机,则在 AVCaptureDeviceInput 崩溃【英文标题】:crash at AVCaptureDeviceInput if camera is disabled in iOS setting 【发布时间】:2012-07-31 03:35:07 【问题描述】:我正在使用 ZXing 小部件来扫描二维码。如果用户从 ios 设置中禁用相机访问,我的应用程序将像这样崩溃:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* 无法添加,因为设备不支持 AVCaptureSessionPresetMedium。使用 -[AVCaptureDevice supportsAVCaptureSessionPreset:]。'
有没有办法尝试提示用户重新打开它?
谢谢
狮子座
【问题讨论】:
【参考方案1】:我在 iPad 1 上遇到了同样的错误,我猜是因为 iPad1 没有摄像头。我这样做是为了解决崩溃问题:
if([[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAVCaptureSessionPreset:AVCaptureSessionPresetMedium])
// add code to open ZXingWidgetController
else
// show alert that device does not support
【讨论】:
【参考方案2】:您可以使用以下代码,它兼容 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;
【讨论】:
以上是关于如果在 iOS 设置中禁用相机,则在 AVCaptureDeviceInput 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Vignette CIFilter 应用于 iOS 中的实时摄像机源?