0

ボタンをクリックした後、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;
  }
}
4

2 に答える 2

2

これでうまくいくはずです:

-(void)turnoff{

    //YOUT TURN OFF CODE    

}

-(void)doTurnOff{

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

}
于 2012-10-27T21:42:53.957 に答える
0

NSTimer を使用して、必要な継続時間と間隔のギャップを持つ一連のオン/オフ コールを作成できます。NSTimer コールバックは、配列や plist などから、次に何をいつ実行するかのシーケンスを読み取ることができます。これは、時間指定されたシーケンシャル ステート マシンを構築するようなものです。

于 2012-10-27T23:08:41.913 に答える