2010-11-20 6 views
5

Je voudrais savoir comment allumer le flash de l'appareil photo sur l'iPhone 4 avec UIImagePickerController.Comment accéder au flash de la caméra sur 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]; 
} 

}

Je lis déjà la page Web UIImagePickerController Référence de la classe ici: http://bit.ly/cdAhhB mais je ne trouve pas la réponse. Quelqu'un peut-il m'aider s'il vous plaît?

Merci

+0

Cela n'a rien à voir avec Xcode. Je vais repasser ça. –

Répondre

4

Vous pouvez l'utiliser. Appelez basiquement 'toggleTorch' lorsque vous souhaitez activer ou désactiver le flash. J'espère que c'est ce que vous cherchiez.

- (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

Je vais essayer ça. Merci! ; D – Aluminum

+3

c'est pour la torche, et n'a rien à voir avec le flash. Il suffit de changer PickerController.cameraFlashMode pour le flash. – Fattie

7
-(void)flashSelected 
{ 

if (PickerController.cameraFlashMode == 
UIImagePickerControllerCameraFlashModeOff) { 

    if ([UIImagePickerController 
isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceRear ]) 

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

tour à tour ..

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

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

parfait merci. – 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; 
     } 
Questions connexes