Индивидуальный фонарик мигает?

Есть ли способ заставить фонарик iPhone мигать несколько раз после нажатия кнопки? Например, если я нажму кнопку, фонарик вспыхнет только 3 раза? Я не нашел информации об этом в Интернете. Может ли кто-нибудь помочь мне с этим? И есть ли способ сделать вспышки длиннее? как мигает 2 секунды?

Не знаю может кто из вас не понял о чем я: хочу включить фонарик всего на 2 секунды и через 2 секунды он сам выключается.

Мой код в то время:

- (void)loadView
{
  [self setView:[[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]];

  AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

  // If torch supported, add button to toggle flashlight on/off
  if ([device hasTorch] == YES)
  {
    flashlightButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 120, 320, 98)];
    [flashlightButton setBackgroundImage:[UIImage imageNamed:@"TorchOn.png"] forState:UIControlStateNormal];
     [flashlightButton addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchUpInside];      

    [[self view] addSubview:flashlightButton];
  }
}

и для включения и выключения:

- (void)buttonPressed:(UIButton *)button
{
  if (button == flashlightButton)
  {
    if (flashlightOn == NO)
    {
      flashlightOn = YES;
      [flashlightButton setBackgroundImage:[UIImage imageNamed:@"TorchOff.png"] forState:UIControlStateNormal];
    }
    else
    {
      flashlightOn = NO;
      [flashlightButton setBackgroundImage:[UIImage imageNamed:@"TorchOn.png"] forState:UIControlStateNormal];
    }

    [self toggleFlashlight];
  }
}

и для имитации фотографирования:

- (void)toggleFlashlight
{
  AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

  if (device.torchMode == AVCaptureTorchModeOff)
  {
    // Create an AV session
    AVCaptureSession *session = [[AVCaptureSession alloc] init];

    // Create device input and add to current session
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error: nil];
    [session addInput:input];

    // Create video output and add to current session
    AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
    [session addOutput:output];

    // Start session configuration
    [session beginConfiguration];
    [device lockForConfiguration:nil];

    // Set torch to on
    [device setTorchMode:AVCaptureTorchModeOn];

    [device unlockForConfiguration];
    [session commitConfiguration];

    // Start the session
    [session startRunning];

    // Keep the session around
    [self setAVSession:session];

    [output release];
  }
  else
  {
    [AVSession stopRunning];
    [AVSession release], AVSession = nil;
  }
}

person MasterRazer    schedule 27.10.2012    source источник
comment
Как включить/выключить вспышку камеры iPhone?   -  person Michael Petrotta    schedule 28.10.2012
comment
У меня уже есть код для включения/выключения, но я хочу включить его программно всего на 2 секунды   -  person MasterRazer    schedule 28.10.2012


Ответы (2)


Это должно помочь:

-(void)turnoff{

    //YOUT TURN OFF CODE    

}

-(void)doTurnOff{

    [self performSelector:@selector(turnoff) withObject:nil afterDelay:2.0];

}
person Mateus    schedule 27.10.2012
comment
Я проверю это в своем проекте одну секунду: D - person MasterRazer; 28.10.2012

Вы можете использовать NSTimer для создания последовательности включенных и выключенных вызовов с любой продолжительностью и интервалом, которые вам нужны. Обратный вызов NSTimer может считывать последовательность того, что делать дальше и когда, из массива или plist и т. д. Это похоже на создание синхронизированного последовательного конечного автомата.

person hotpaw2    schedule 27.10.2012