Ios 使用带AVFoundation的前置摄像头时,闪光灯不工作

Ios 使用带AVFoundation的前置摄像头时,闪光灯不工作,ios,objective-c,avfoundation,avcapturedevice,ios-camera,Ios,Objective C,Avfoundation,Avcapturedevice,Ios Camera,我有一个使用AVFoundation的摄像头应用程序。当用户拍照时,他们可以按下按钮来打开和关闭闪光灯。现在这对后向摄像头非常有效,但我无法让它对前向摄像头起作用 无论我做什么,前置摄像头都不会使用闪光灯 下面是我用来在按下按钮时打开和关闭flash的代码: -(IBAction)toggleFlash { NSLog(@"Toggle flash button has been pressed"); NSArray *devices = [AVCaptureDevice devicesWi

我有一个使用AVFoundation的摄像头应用程序。当用户拍照时,他们可以按下按钮来打开和关闭闪光灯。现在这对后向摄像头非常有效,但我无法让它对前向摄像头起作用

无论我做什么,前置摄像头都不会使用闪光灯

下面是我用来在按下按钮时打开和关闭flash的代码:

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

}

没有正面带有闪光灯的iOS设备。如果像您所说的,对于前置摄像头,
hasFlash
方法返回
YES
,那么这是一个bug。考虑把A提交给苹果公司。您有说明该问题的示例代码,因此您可以附加它。

您确定调试正确吗?如果我在iPhone上运行您的代码的缩短版本:

- (IBAction)button:(id)sender
{
    NSLog(@"Toggle flash button has been pressed");

    NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];

    int i = 0;

    for (AVCaptureDevice *device in devices)
    {
        if ([device hasFlash] == YES)
            NSLog(@"Device %d has flash!", i);

        else
            NSLog(@"Device %d has no flash!", i);
        ++i;
    }

}
我得到这个结果:

2014-03-08 09:45:48.551 test[12162:60b] Toggle flash button has been pressed
2014-03-08 09:45:48.597 test[12162:60b] Device 0 has flash!
2014-03-08 09:45:48.600 test[12162:60b] Device 1 has no flash!

因此,苹果没有前置摄像头闪光灯,也没有bug。

尽管这是一条老线索,但对于那些目前想在前置摄像头上用切换白屏“模仿”闪光灯并与设备的hasFlash属性相混淆的人来说:

iPhone 6s和6s Plus前置摄像头是第一款 前向iOS摄像头对-hasFlash属性响应YES


资料来源:(段落:视网膜闪光)

前向摄像头的
AVCaptureDevice
是否实际返回
YES
用于
hasplash
?据我所知,没有一款iOS设备有正面闪光灯。@robmayoff是的,所有的东西都包含在代码中:如果([device hasFlash]==YES),它正在成功切换并记录设备。当你一直按按钮时,flashMode为“0”,然后为“1”。也许它真的没有闪光灯。我想我只是假设它会。我百分之百肯定,没有iOS设备的正面有闪光灯。