我有一个开关,如果我激活它,我打开相机闪光灯,如果你关闭,关闭(默认关闭)
这是我的代码:
- (void)viewDidAppear:(BOOL)animated
{
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera] == NO)
return;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType: UIImagePickerControllerCameraCaptureModeVideo];
picker.allowsEditing = NO;
picker.showsCameraControls = NO;
picker.delegate = self;
[self presentModalViewController:picker animated:YES];
}
- (IBAction) onChangeSwitch:(id)sender
{
switch(interruptor.on){
case YES:
picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;
break;
case NO:
picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
break;
}
}
在网上看,我看到我的代码是简单地转动闪光灯而不是从iPhone相机启动或停止火炬。
我已经看到它完成了AVCaptureDevice Turn on torch/flash on iPhone#3367424我现在不知道怎么能适应我的代码。
有人知道并帮助我吗?
感谢
答案 0 :(得分:3)
- (void)flashLightOn {
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device hasFlash] == YES) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOn];
[device unlockForConfiguration];
}
}
}
-(void)flashLightOff {
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device hasFlash] == YES) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
}
}
答案 1 :(得分:2)
以下是我如何打开灯(a.k.a。火炬)和&关:
- (void) setTorchOn:(BOOL)isOn
{
AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
[device lockForConfiguration:nil]; //you must lock before setting torch mode
[device setTorchMode:isOn ? AVCaptureTorchModeOn : AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
我很确定你需要链接到AVFoundation框架。