如何知道相机闪光灯是不是已经点亮(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)?的主要内容,如果未能解决你的问题,请参考以下文章