我有一个使用AVFoundation的相机应用程序。当用户拍照时,他们可以按一个按钮来打开和关闭闪光灯。目前,这对于后置摄像头非常有效,但我无法将其用于前置摄像头。
无论我做什么,前置摄像头都不会使用闪光灯。
这是我用来在按下按钮时打开和关闭闪光灯的代码:
-(IBAction)toggleFlash {
NSLog(@"Toggle flash button has been pressed");
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device hasFlash] == YES) {
NSLog(@"Current Device Flash Mode: %d", device.flashMode);
[device lockForConfiguration:nil];
if(device.flashMode == 0) {
[device setFlashMode:AVCaptureFlashModeOn];
NSLog(@"New device flash mode: %d", device.flashMode);
} else if (device.flashMode == 1) {
[device setFlashMode:AVCaptureFlashModeOff];
NSLog(@"New device flash mode: %d", device.flashMode);
} else if (device.flashMode == 2) {
[device setFlashMode:AVCaptureFlashModeOn];
}
[device unlockForConfiguration];
}
}
}
最佳答案
尽管它是一个旧线程,但是对于任何当前想要使用切换的白屏“模仿”前置摄像头上的Flash并与设备的hasFlash属性混淆的人:
iPhone 6s和6s Plus前置摄像头是第一款
前置iOS相机对-hasFlash属性做出“是”响应。
资料来源:https://forums.developer.apple.com/thread/21694(段落:Retina Flash)
关于ios - 将前置摄像头与AVFoundation一起使用时,闪光灯不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22266484/