AVCaptureDevice 的 hasFlash 和 hasTorch 属性有什么区别?

What is the difference between AVCaptureDevice’s hasFlash and hasTorch properties?

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

此外,是否存在任何 iOS 设备仅具有上述其中一项?

手电筒是常亮的灯。如果您使用的是美式英语,请考虑手电筒。

闪光灯是拍照时使用的短暂强光。

所有较新的手机都有。我相信最后的 iPod touch 两者都有。很可能只有带有闪光灯但没有手电筒的旧设备。

在 iPhone 设备上两个摄像头都有闪光灯:后置摄像头有一个 LED 摄像头闪光灯,可以在手电筒模式下操作,前置摄像头使用显示屏作为闪光灯(短时间显示白色屏幕发出足够的光线)但显示器不能用作手电筒。

正在检查 [device hasFlash] 以从 AVCaptureDevice 列表中以编程方式设置 LED 闪光灯 ON/OFF:

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];
}