2010-11-20 2 views
5

私はUIImagePickerControllerを使ってiPhone 4でカメラのフラッシュをオンに切り替える方法を知っています。UIImagePickerControllerでカメラのフラッシュにアクセスするには?

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerCameraDeviceFront] == YES) 
{ 
    /// What code here /// 
} 

else 
{ 
    NoFlash = [[UIAlertView alloc] initWithTitle:@"Uh-Oh" 
             message:@"Your device doesn't have a flash camera" 
             delegate:nil 
           cancelButtonTitle:@"mhmm, OK" 
           otherButtonTitles:nil]; 
    NoFlash.delegate = self; 
    [NoFlash show]; 
    [NoFlash release]; 
} 

は}

私はすでにここにUIImagePickerControllerクラスリファレンスのWebページをお読みください。http://bit.ly/cdAhhBが、私は答えを見つけることができませんでした。誰か助けてくれますか?

ありがとうございました

+0

これはXcodeのとは何の関係もありません。私はこれを再検討するつもりです。 –

答えて

4

これは使用できます。フラッシュをオンまたはオフにするには、基本的に 'toggleTorch'を呼び出します。うまくいけば、これはあなたが探していたものです。

- (void) toggleTorch { 

    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    if ([device hasTorch] && [device hasFlash]){ 

     if (device.torchMode == AVCaptureTorchModeOff) { 

      NSLog(@"It's currently off.. turning on now."); 

      [power setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal]; 

      AVCaptureDeviceInput *flashInput = [AVCaptureDeviceInput deviceInputWithDevice:device error: nil]; 
      AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init]; 

      AVCaptureSession *session = [[AVCaptureSession alloc] init]; 

      [session beginConfiguration]; 
      [device lockForConfiguration:nil]; 

      [device setTorchMode:AVCaptureTorchModeOn]; 
      [device setFlashMode:AVCaptureFlashModeOn]; 

      [session addInput:flashInput]; 
      [session addOutput:output]; 

      [device unlockForConfiguration]; 

      [output release]; 

      [session commitConfiguration]; 
      [session startRunning]; 

      [self setTorchSession:session]; 
      [session release]; 
     } 
     else { 

      NSLog(@"It's currently on.. turning off now."); 

      [power.imageView setImage:[UIImage imageNamed:@"[email protected]"]]; 

      [torchSession stopRunning]; 

     } 

    } 

} 

-(IBAction)powerBtn 
{ 
    [self toggleTorch]; 
} 
+0

私はそれを試みます。ありがとう! ; D – Aluminum

+3

これはトーチのためのもので、フラッシュとは関係ありません。フラッシュのためにPickerController.cameraFlashModeを変更するだけです。 – Fattie

7
-(void)flashSelected 
{ 

if (PickerController.cameraFlashMode == 
UIImagePickerControllerCameraFlashModeOff) { 

    if ([UIImagePickerController 
isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear ]) 

    { 
     PickerController.cameraFlashMode = 
UIImagePickerControllerCameraFlashModeOn; 
    } 
} 
else 
{ 
    PickerController.cameraFlashMode = 
UIImagePickerControllerCameraFlashModeOff; 
}  
} 
交互

..

-(void)_flashToggle 
{ 
if (! [UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear ]) 
    return; 

if (PickerController.cameraFlashMode == UIImagePickerControllerCameraFlashModeOff) 
    PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; 
else 
    PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; 
} 
+0

完璧に感謝します。 – Fattie

0
// not all devices have two cameras or a flash so just check here 
    if ([UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceRear]) { 
     imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
     if ([UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceFront]) { 
      cameraSelectionButton.alpha = 1.0; 
      showCameraSelection = YES; 
     } 
    } else { 
     imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    } 

    // flash mode on 
     if ([UIImagePickerController isFlashAvailableForCameraDevice:imagePicker.cameraDevice]) 
     { 
      imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; 
      flashModeButton.alpha = 1.0; 
      showFlashMode = YES; 
     } 
関連する問題