Экспозиция AVCaptureDeviceMode не поддерживается?
Я не совсем понимаю!
Я пытаюсь вручную настроить экспозицию, чтобы она соответствовала CGPoint в центре предварительного просмотра. Я беру объект устройства и использую setExposureMode и setExposurePointOfInterest для того, чтобы сделать манипуляцию. Первое, что я делаю, это проверяю, поддерживает ли устройство режим экспозиции. Если не поддерживается, вернитесь. Если это поддерживается, тогда установите значения. Моя путаница связана с тем фактом, что значение для устройства isExposureModeSupported:jectionMode возвращает NO. Но это поддерживается! У меня есть iPhone 5с. Если я игнорирую инструкцию возврата, я не получаю никаких ошибок.
- (void)device:(AVCaptureDevice *)device exposureMode:(AVCaptureExposureMode)exposureMode atPoint:(CGPoint)point
{
BOOL exposureModeSupported = [device isExposureModeSupported:exposureMode];
if (!exposureModeSupported)
return;
if ([device lockForConfiguration:&error]) {
[device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[device setExposurePointOfInterest:point];
CALayer *exposeRect = [CALayer layer];
exposeRect.frame = CGRectMake(self.center.x-30, self.center.y-30, 60, 60);
exposeRect.borderColor = [UIColor whiteColor].CGColor;
exposeRect.borderWidth = 2;
exposeRect.name = @"exposeRect";
[self.previewLayer addSublayer:exposeRect];
[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(dismissExposeRect)
userInfo: nil
repeats: NO];
[device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[device unlockForConfiguration];
}
}
Как я могу проверить, поддерживается ли режим экспозиции, если я не могу доверять возвращенному значению?
Я закончил И-чек, но я не уверен, что это правильный способ проверки. Условие теперь выглядит так:
if (![device isExposurePointOfInterestSupported] && ![device isExposureModeSupported:exposureMode])
return;
Кто-нибудь еще сталкивался с этим и кто-нибудь знает, как правильно с этим справиться?
Заранее спасибо.
2 ответа
Я думаю, никто не хотел вмешиваться в это. Я закончил И-чек, но я не уверен, что это правильный способ проверки, но это сработало.
Да, вы должны проверить exposurePointOfInterestSupported
А ТАКЖЕ isExposureModeSupported:
,
В вашем случае вы проверяете, AVCaptureExposureMode
в качестве аргумента в вашей функции поддерживается, но установите экспозицию AVCaptureExposureModeContinuousAutoExposure
, что не обязательно поддерживается.