Как использовать AVCaptureFlashMode

Я делаю приложение, позволяющее мне сшивать изображения в панорамную сцену. Я хочу иметь возможность программно включать светодиод вспышки на iPhone 4.

Как я могу это сделать?

Я прочитал документацию и обнаружил, что мне нужно использовать AVCaptureFlashMode.

но я не могу понять, как его использовать?

любая помощь будет оценена.


Обновленный код ниже. Спасибо СИФ!

NSError* error = nil;
    NSLog(@"Setting up LED");

    if([captDevice hasTorch] == NO)
    {
        NSLog(@"Error: This device doesnt have a torch");
    }
    if([captDevice isTorchModeSupported:AVCaptureTorchModeOn] == NO)
    {
        NSLog(@"Error: This device doesnt support AVCaptureTorchModeOn");
    }

    AVCaptureSession* captureSession = [[AVCaptureSession alloc] init];
    AVCaptureDeviceInput* videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captDevice error:&error];
    AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];

    if (videoInput && videoOutput) 
    {
        [captureSession addInput:videoInput];
        [captureSession addOutput:videoOutput];
        if([captDevice lockForConfiguration:&error])
        {
            if (flag == YES) {
                captDevice.torchMode = AVCaptureTorchModeOn;
            } else {
                captDevice.torchMode = AVCaptureTorchModeOff;
            }           
            [captDevice unlockForConfiguration];
        }
        else 
        {
            NSLog(@"Could not lock device for config error: %@", error);
        }
        [captureSession startRunning];
    }
    else 
    {
        NSLog(@"Error: %@", error);
    }

Как выключить его?


person Cocoa Dev    schedule 08.07.2010    source источник
comment
См. мой ответ здесь для дальнейшего использования о том, как включать/выключать: " title="включить фонарик на iphone 4"> stackoverflow.com/questions/3190034/   -  person iwasrobbed    schedule 30.07.2010


Ответы (1)


person    schedule
comment
Нужно ли выделять инициализацию AVCaptureDevice? - person Cocoa Dev; 08.07.2010
comment
нет, вы сможете получить его у [AVCaptureDevice devices] - person slf; 08.07.2010
comment
@SIF Не могли бы вы обновить пример кода, чтобы продемонстрировать, как включается вспышка? Пожалуйста, не думайте, что я получил AVCaptureDevice. Как насчет метода lockConfiguration? - person Cocoa Dev; 08.07.2010
comment
lockConfiguration — это просто вызов, но не забудьте разблокировать - person slf; 09.07.2010
comment
может быть, вы хотите Факела? Это должно держать светодиод включенным все время - person slf; 09.07.2010
comment
попробуйте NSLog(@"%@", currentDevice) во время цикла allDevices для получения дополнительной информации - person slf; 09.07.2010
comment
Спасибо, но я продолжаю получать *** Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Вы должны вызвать lockForConfiguration и успешно получить блокировку конфигурации перед установкой flashMode:» - person Cocoa Dev; 09.07.2010