2013-05-09 2 views
0

Я пишу приложение, которое имеет пользовательское представление для съемки фотографий с помощью камеры, аналогично AVCam от Apple. В нем я хочу, чтобы кнопка исчезла и снова появлялась для значка вспышки при каждом переключении камеры. IE При использовании передней камеры вспышка не должна быть там, и при использовании спины она должна!Проверьте, какая камера в настоящее время используется в приложении iOS.

Мой код для этого в данный момент:

AVCaptureDevicePosition position = [[videoInput device] position]; 

    if (position == AVCaptureDevicePositionBack) { 
    self.flashButton.hidden == YES; 
} 

Но это приходит с ошибкой на видеоввода, и я не знаю, почему ... Любая документация вы могли бы направить меня или идеи изменения в моем коде будут очень оценены!

EDIT

Просто в основном конкретно почему он пришел с ошибкой «использование необъявленной идентификатора» с этим кодом:

ответ

1

Код ниже может помочь вам:

AVCaptureDeviceInput *newVideoInput; 
AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; 

if (currentCameraPosition == AVCaptureDevicePositionBack) 
{ 
    currentCameraPosition = AVCaptureDevicePositionFront; 
} 
else 
{ 
    currentCameraPosition = AVCaptureDevicePositionBack; 
} 

AVCaptureDevice *backFacingCamera = nil; 
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
for (AVCaptureDevice *device in devices) 
{ 
    if ([device position] == currentCameraPosition) 
    { 
     backFacingCamera = device; 
    } 
} 
newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error]; 
+0

Спасибо за помощь, но я увидел это в приложении AVCam. Я не знаю, как просто написать небольшой фрагмент кода в псевдокоде, например: if current camera = back camera {show button} else {hide button} – falky

+0

При каждом использовании [videoInput device] возникает ошибка. Поэтому мне было интересно, есть ли у вас какая-либо идея или какой-либо другой способ определить, какая камера используется (или «AVCaptureDevicePositionBack» или «AVCaptureDevicePositionFront») моим UIView. Оттуда я скрою или покажу flashButton ...? Спасибо за вашу помощь. Моя идея была примерно такой: «AVCaptureDevicePosition currentCameraPosition = [[videoInput device] position]; if ([currentCameraPosition isEqual: AVCaptureDevicePositionBack]) { self.flashButton.hidden = NO;} else {self.flashButton.hidden = YES; }» – falky

0

Я искал решение для подобной проблемы и придумал это, и это может сработать для вас (тестируется только в iOS8 и написано в Swift):

var captureDevice : AVCaptureDevice? 

... 

var currentDevice:String = captureDevice?.localizedName as String! 

if currentDevice.rangeOfString("Back Camera") != nil { 
    //hide flash icon 
} else if currentDevice.rangeOfString("Front Camera") != nil { 
    //show flash icon 
} 

Этот код предполагает, что вы уже настроили камеру правильно

Примечание: Это может быть не самый лучший способ, потому что, если компания Apple решит изменить localizedName он сломается. И я знаю, что этот вопрос древний, но он может помочь кому-то, кто наткнулся на него.