Проблема со вспышкой камеры iphone - PullRequest
4 голосов
/ 09 августа 2011

У меня есть переключатель, который, если я его активирую, включает вспышку камеры, а если выключить, выключить (по умолчанию выключено)

Это мой код:

- (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 Включите фонарик / вспышку на iPhone # 3367424 Я не знаю, как теперь приспособить это к моему коду.

Кто-нибудь знает и протягивает мне руку?

спасибо

Ответы [ 2 ]

3 голосов
/ 21 апреля 2012
- (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 голосов
/ 10 августа 2011

Вот как я могу включить и выключить свет (например, факел):

- (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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...