Включить камеру, прежде чем делать фото? - PullRequest
0 голосов
/ 19 января 2011

Можно ли программно включить вспышку камеры на новом устройстве 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, найденный здесь: Включите фонарик / вспышку на iPhone В UIImagePickerController.

кажется, что нет прямой трансляции видео.

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

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

1 Ответ

1 голос
/ 19 января 2011

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

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

...