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

Posted

技术标签:

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

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

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

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

【问题讨论】:

***.com/questions/5882829/… 【参考方案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];
  


【讨论】:

以上是关于如何知道相机闪光灯是不是已经点亮(iOS)?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查设备是不是有闪光灯 LED android

如何检查设备是不是有分别用于前置和后置摄像头的闪光灯?

如何开启/关闭iPhone相机闪光灯?

Android相机闪光灯控制[重复]

如何使用带有 react-native-camera 的默认 iOS 相机控件

是否可以以编程方式调暗 iPhone 相机闪光灯的灯光?