2011-01-19 4 views
0

Могу ли я программно включить вспышку камерына новое устройство iPhone 4, перед тем принимая картину с -takePicture?Включите камеру.

Я разрабатываю приложение для фотосъемки для iOS 4 и хочу включить питание на вспышке перед пользователь делает снимок, чтобы они могли видеть эффект вспышки заранее.

Проблема, кажется, что вспышка света, чтобы остаться, вам необходимо установить torchMode на, и это возможно только в «режиме видео» (UIImagePickerControllerCameraCaptureModeVideo), в то время как вы можете только спросить UIImagePickerController к takePicture когда он находится в режиме «фото» (UIImagePickerControllerCameraCaptureModePhoto).

Таким образом, следующие работы, но показывает только свет вспышки при съемке:

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    picker.showsCameraControls = NO; 
    picker.navigationBarHidden = YES; 
    picker.toolbarHidden = YES; 

    picker.mediaTypes = [NSArray arrayWithObjects:@"public.image", nil]; 
    picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 
    picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; 
    [self presentModalViewController:picker animated:YES]; 

И это также работает (показывает Факеле все время), но тогда я не могу сфотографировать.

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    picker.showsCameraControls = NO; 
    picker.navigationBarHidden = YES; 
    picker.toolbarHidden = YES; 

    picker.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeMovie, nil]; 
    picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo; 
    picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; 
    [self presentModalViewController:picker animated:YES]; 

Когда я попробовать toggleTorch код здесь: Turn on torch/flash on iPhone там, кажется, не быть любой живой корм видео в UIImagePickerController.

Являются ли эти UIImagePickerController и AVCaptureSession совместимыми друг с другом? или вы должны выбрать один или другой?

И кто-нибудь знает обходное решение для включения режима вспышки (или torchMode) и иметь возможность takePicture?

ответ

1

Посмотрите на сессии WWDC 2010 (в частности, 409), где они входят в функциональность, такую ​​как тот, который вы ищете.

По существу вам необходимо отойти от UIImagePickerController, если вы хотите выполнить эти пользовательские функции камеры и перейти к классам AVFoundation.

+0

Другой момент - включить светодиодную вспышку в любом случае, кроме снимка (т. Е. До или после снятия рисунка), вам необходимо использовать факел (AVCaptureTorchMode), а не вспышку. – bijanv

+0

Спасибо, что указатель на эту сессию был очень полезен в объяснении всего об инфраструктуре AVFoundation! Особенно, например, код примера AVCam Demo делает все, что я хотел бы сделать (и многое другое). –

Смежные вопросы