2010-07-08 1 views
3

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

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

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

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

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


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

 
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); 
    } 

Как отключить?

+0

Пожалуйста, смотрите мой ответ здесь в будущем о том, чтобы включить/выключить: http://stackoverflow.com/questions/3190034/turn-on-torch-flash-on-iphone-4/3367424# 3367424 – iwasrobbed

ответ

7
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]; 
} 
+0

Нужно ли выделять init AVCaptureDevice? –

+0

нет, вы можете получить его от '[устройств AVCaptureDevice]' – slf

+0

@SIF. Можете ли вы, пожалуйста, обновить свой пример кода, чтобы продемонстрировать, как включена вспышка? Пожалуйста, не предполагайте, что я получил AVCaptureDevice. Как насчет метода lockConfiguration? –

 Смежные вопросы

  • Нет связанных вопросов^_^