如何在UIImagePickerController上访问相机闪光灯?

我想知道如何使用UIImagePickerController打开iPhone 4上的相机闪光灯。

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类参考网页: http : //bit.ly/cdAhhB但我找不到答案。 有人可以帮帮我吗?

谢谢

你可以用它。 当您想要打开或关闭闪光灯时,基本上可以调用’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:@"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's currently on.. turning off now."); [power.imageView setImage:[UIImage imageNamed:@"off@2x.png"]]; [torchSession stopRunning]; } } } -(IBAction)powerBtn { [self toggleTorch]; } 
 -(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; } 
 // 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; }