4

画像をつなぎ合わせてパノラマ シーンを作成できるアプリを作成しています。プログラムで iPhone 4 の Flash LED をオンにしたいと考えています。

これどうやってするの?

ドキュメントを読んで、AVCaptureFlashMode を使用する必要があることを発見しました

しかし、私はそれをどのように使用するのか理解できませんか?

任意の助けをいただければ幸いです。


以下のコードを更新しました。ありがとうSIF!

NSError* エラー = nil;
    NSLog(@"LEDの設定");

    if([captDevice hasTorch] == NO)
    {
        NSLog(@"エラー: このデバイスにはトーチがありません");
    }
    if([captDevice isTorchModeSupported:AVCaptureTorchModeOn] == NO)
    {
        NSLog(@"エラー: このデバイスは AVCaptureTorchModeOn をサポートしていません");
    }

    AVCaptureSession* captureSession = [[AVCaptureSession alloc] init];
    AVCaptureDeviceInput* videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:captDevice error:&error];
    AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];

    if (ビデオ入力 && ビデオ出力)
    {
        [captureSession addInput:videoInput];
        [captureSession addOutput:videoOutput];
        if([captDevice lockForConfiguration:&エラー])
        {
            もし (フラグ == はい) {
                captDevice.torchMode = AVCaptureTorchModeOn;
            } そうしないと {
                captDevice.torchMode = AVCaptureTorchModeOff;
            }           
            [captDevice unlockForConfiguration];
        }
        そうしないと
        {
            NSLog(@"構成エラーのためデバイスをロックできませんでした: %@"、エラー);
        }
        [captureSession startRunning];
    }
    そうしないと
    {
        NSLog(@"エラー: %@"、エラー);
    }

どうやってオフにしますか?

4

1 に答える 1

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];
}
于 2010-07-08T13:31:44.607 に答える