AVCaptureDevice
同时具有hasFlash
和hasTorch
属性(以及类似的其他方法/属性)。闪光灯和火炬有什么区别?
此外,是否存在只有上述其中一种的iOS设备?
答案 0 :(得分:4)
火炬是留在上面的灯。如果您使用的是美式英语,请考虑手电筒。
闪光灯是拍摄照片时使用的短暂亮光。
所有较新的手机都有。我相信最后的iPod touch都有。它很可能只有具有闪光灯和无火炬的旧设备。
答案 1 :(得分:1)
在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];
}