如何知道相机闪光灯是否已经点亮(iOS)?

时间:2013-03-01 10:01:43

标签: ios camera

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

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

例如,如果模式为UIImagePickerControllerCameraFlashModeAuto,在拍摄控件之前相机闪光灯是否可以点亮,我想在进行某些操作之前知道相机闪光灯的状态。

3 个答案:

答案 0 :(得分:0)

您可以使用以下代码来查找

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

快乐编码...... !!!

答案 1 :(得分:0)

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

   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 :(得分:0)

我和你的问题一样。

iOS支持两种模式 - Flash Light&amp;火炬。下面的代码检查每个代码是否可用&amp;然后根据你打的那个打开或关闭它们。它还会检查指示灯是否已打开/关闭。

Flash On -

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

}

Flash Off-

shinysky