【问题标题】:How to know if camera flash is already lit or not (iOS)?如何知道相机闪光灯是否已经点亮(iOS)?
【发布时间】:2013-03-01 10:01:43
【问题描述】:

更新:我知道如何打开/关闭相机闪光灯。我想知道的是相机闪光灯是否已经点亮。

我想知道 iPhone 上的相机闪光灯是否点亮,但我在 UIImagePickerController 中没有找到任何方法可以让我这样做。我知道我们可以得到cameraFlashMode。但我想知道相机闪光灯是否已经点亮。

例如,如果模式是UIImagePickerControllerCameraFlashModeAuto,在我控制之前,相机闪光灯可能会亮或不亮,我想在做一些操作之前知道相机闪光灯的状态。

【问题讨论】:

标签: ios camera


【解决方案1】:

令人惊讶的是,这真的没有回答第一个回答的人甚至没有回答这个问题......

   func torchButtonPressed() {
    //
    let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
    do {
        try device.lockForConfiguration()
    } catch {
        return
    }
    if device.torchMode == AVCaptureTorchMode.Off {
        do {
            device.torchMode = AVCaptureTorchMode.On
            try device.setTorchModeOnWithLevel(AVCaptureMaxAvailableTorchLevel)
        } catch {
            print("no torch")
            return
        }

    } else {
        device.torchMode = AVCaptureTorchMode.Off
    }
    device.unlockForConfiguration()
}

【讨论】:

    【解决方案2】:

    你可以使用下面的代码来找到它

    #import <AVFoundation/AVFoundation.h>
    
    
    - (void) turnTorchOn: (bool) on {
    
    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if (captureDeviceClass != nil) {
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch] && [device hasFlash]){
    
        [device lockForConfiguration:nil];
        if (on) {
            NSLog(@"Torch is ON");
        } else {
          NSLog(@"Torch is OFF");
    
        }
        [device unlockForConfiguration];
    }
    }
    }
    

    编码愉快...!!!

    【讨论】:

    • 嗨,毗湿奴。谢谢你的回复,但我不太明白你得到了flash的状态。 if (on) {@"Torch is ON"},但是这里的“on”是传入的……还有一点就是,方法的名字,turnTorchOn,看来应该用这个方法来开启/关闭闪光灯,不获取闪光灯的开/关状态。我说的对吗?
    【解决方案3】:

    我遇到了和你一样的问题。

    iOS 支持两种模式 - 闪光灯和手电筒。下面的代码检查每个是否可用,然后根据您调用的代码打开或关闭它们。它还会检查灯是否已经打开/关闭。

    闪光灯开启 -

    -(void)flashOn {
    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if (captureDeviceClass != nil) {
        AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        [device lockForConfiguration:nil];
    
        if ([device hasFlash]) {
            if ([device flashMode] == AVCaptureFlashModeOff) {
                [device setFlashMode:AVCaptureFlashModeOn];
            }
        }
    
        if ([device hasTorch]) {
            if ([device torchMode] == AVCaptureTorchModeOff) {
                [device setTorchMode:AVCaptureTorchModeOn];
            }
        }
    
        [device unlockForConfiguration];
      }
    }
    

    闪光灯关闭-

    -(void)flashOff {
    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if (captureDeviceClass != nil) {
        AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        [device lockForConfiguration:nil];
    
        if ([device hasFlash]) {
            if ([device flashMode] == AVCaptureFlashModeOn) {
                [device setFlashMode:AVCaptureFlashModeOff];
            }
        }
    
        if ([device hasTorch]) {
            if ([device torchMode] == AVCaptureTorchModeOn) {
                [device setTorchMode:AVCaptureTorchModeOff];
            }
        }
    
        [device unlockForConfiguration];
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多