Как мне использовать 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];
}