【问题标题】:Problem with the camera flash iphoneiphone相机闪光灯问题
【发布时间】:2011-10-23 09:06:06
【问题描述】:

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

这是我的代码:

- (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 我现在不知道如何使它适应我的代码。

有谁知道并帮帮我吗?

谢谢

【问题讨论】:

    标签: iphone camera


    【解决方案1】:
    - (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];
            }
    
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      以下是我打开和关闭灯(又名手电筒)的方法:

      - (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 框架。

      【讨论】:

      • 非常感谢。我会尝试看看我是否有运气,但我想如果我有选择器,我不能与 AvCaputre 混合 .. 看看我是否有运气。再次非常感谢您。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多