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

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

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

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

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

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


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

NSError * error = nil;
    NSLog (@ "Настройка светодиодов");

    если ([captDevice hasTorch] == НЕТ)
    {
        NSLog(@"Ошибка: у этого устройства нет факела");
    }
    if([captDevice isTorchModeSupported:AVCaptureTorchModeOn] == НЕТ)
    {
        NSLog(@"Ошибка: это устройство не поддерживает 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];
        если ([captDevice lockForConfiguration:&error])
        {
            if (flag == YES) {
                captDevice.torchMode = AVCaptureTorchModeOn;
            } еще {
                captDevice.torchMode = AVCaptureTorchModeOff;
            }           
            [captDevice unlockForConfiguration];
        }
        еще 
        {
            NSLog (@ "Не удалось заблокировать устройство для ошибки конфигурации: %@", ошибка);
        }
        [captureSession startRunning];
    }
    еще 
    {
        NSLog (@ "Ошибка: %@", ошибка);
    }

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

1 ответ

Решение
AVCaptureDevice* d = nil;

// find a device by position
NSArray* allDevices = [AVCaptureDevice devices];
for (AVCaptureDevice* currentDevice in allDevices) {
  if (currentDevice.position == AVCaptureDevicePositionBack) {
    d = currentDevice;
  }
}

// at this point, d may still be nil, assuming we found something we like....

NSError* err = nil;
BOOL lockAcquired = [d lockForConfiguration:&err];

if (!lockAcquired) {
   // log err and handle...
} else {
   // flip on the flash mode
   if ([d hasFlash] && [d isFlashModeSupported:AVCaptureFlashModeOn] ) {
      [d setFlashMode:AVCaptureFlashModeOn];
   }

   [d unlockForConfiguration];
}
Другие вопросы по тегам