AVCaptureDevice同时具有hasFlashhasTorch属性(以及类似的其他方法/属性)。闪光灯和手电筒有什么区别?

另外,是否存在仅具有上述一种设备的iOS设备?

最佳答案

在iPhone设备上,两个摄像头均具有闪光灯:后置摄像头具有LED摄像头闪光灯,并且可以在手电筒模式下运行,而前置摄像头将显示屏用作闪光灯(短时间显示白屏会发出足够的光),但显示屏不能用作火炬。

选中[device hasFlash]以从AVCaptureDevice列表中以编程方式设置LED闪光灯的开/关:

NSArray * devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];

这是不够的,因为两个摄像头都将通过条件[device hasFlash],但是为前置摄像头设置[device setTorchMode:AVCaptureTorchModeOn]可能会导致应用崩溃。最好的办法是同时检查两个:

if ([device hasFlash] && [device hasTorch]) {
 [device lockForConfiguration:nil];
 [device setTorchMode:AVCaptureTorchModeOn]; // for example
 [device unlockForConfiguration];
}

关于ios - AVCaptureDevice的hasFlash和hasTorch属性有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33323890/

10-12 07:02