相机闪光灯问题

时间:2011-08-09 16:07:09

标签: iphone camera

我有一个开关,如果我激活它,我打开相机闪光灯,如果你关闭,关闭(默认关闭)

这是我的代码:

- (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我现在不知道怎么能适应我的代码。

有人知道并帮助我吗?

感谢

2 个答案:

答案 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框架。