How to access camera flash on UIImagePickerController?

I would like to know how to enable camera flash on iPhone 4 using 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]; } 

}

I already read the web page with a link to the UIImagePickerController class: http://bit.ly/cdAhhB , but I did not find the answer. Can someone please help me?

thanks

+5
source share
3 answers

You can use this. Basically called "toggleTorch" when you want to turn the flash on or off. Hope this is what you were looking for.

 - (void) toggleTorch { AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if ([device hasTorch] && [device hasFlash]){ if (device.torchMode == AVCaptureTorchModeOff) { NSLog(@"It currently off.. turning on now."); [power setImage:[UIImage imageNamed:@" on@2x.png "] 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 currently on.. turning off now."); [power.imageView setImage:[UIImage imageNamed:@" off@2x.png "]]; [torchSession stopRunning]; } } } -(IBAction)powerBtn { [self toggleTorch]; } 
+4
source
 -(void)flashSelected { if (PickerController.cameraFlashMode == UIImagePickerControllerCameraFlashModeOff) { if ([UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear ]) { PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; } } else { PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; } } 

alternately..

 -(void)_flashToggle { if (! [UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear ]) return; if (PickerController.cameraFlashMode == UIImagePickerControllerCameraFlashModeOff) PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; else PickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; } 
+7
source
 // 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; } 
0
source

All Articles