我有一个使用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/

10-12 05:39