做二维码扫描的时候需要做一个 开灯 的功能,开启系统灯光的功能,就写了一个demo。
首先需要导入系统拍摄设备的类库,AVFoundation.
代码如下:
- (void)viewDidLoad {
[superviewDidLoad];
UIButton* btn = [[UIButtonalloc] initWithFrame:CGRectMake(50,100, 100,30)];
btn.backgroundColor = [UIColorgreenColor];
[btn addTarget:selfaction:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];
[btn setTitle:@"开启"forState:UIControlStateNormal];
[btn setTitle:@"关闭"forState:UIControlStateSelected];
[self.viewaddSubview:btn];
}
-(void)btnClick:(UIButton*)btn
{
btn.selected = !btn.selected;
[selfturnTorchOn:btn.selected];
}
-(void)turnTorchOn: (bool) on
{
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass !=nil) {
AVCaptureDevice *device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
if ([devicehasTorch] && [device hasFlash]){
[device lockForConfiguration:nil];
if (on) {
[device setTorchMode:AVCaptureTorchModeOn];
[device setFlashMode:AVCaptureFlashModeOn];
} else {
[device setTorchMode:AVCaptureTorchModeOff];
[device setFlashMode:AVCaptureFlashModeOff];
}
[device unlockForConfiguration];
}else{
NSLog(@"初始化失败");
}
}else{
NSLog(@"没有闪光设备");
}
}