Экспозиция 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, что не обязательно поддерживается.

Другие вопросы по тегам