2013-10-25 3 views
1

Я следующий код работает на моем iPhone V:камера никогда не активирует LowLightBoost

// Create the capture device 
camera = [CameraManager cameraWithPosition:AVCaptureDevicePositionBack]; 
if (camera.lowLightBoostSupported) { 
    if ([camera lockForConfiguration:nil]) { 
     camera.automaticallyEnablesLowLightBoostWhenAvailable = YES; 
     [camera unlockForConfiguration]; 
    } 
} 

Но lowLightBoost никогда не активируется, даже если я поставлю устройство с обратной стороны на столе так, предварительный просмотр изображения смоль ,

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
     fromConnection:(AVCaptureConnection *)connection 
{ 

    NSLog(@"LowLight active: %@ Camera lowlightWhenAvailable: %@",camera.isLowLightBoostEnabled ? @"true": @"false",camera.automaticallyEnablesLowLightBoostWhenAvailable ? @"true": @"false"); 

дает мне

2013-10-25 10: 21: 53.179 aCoDriver [1019: 668f] LowLight активная ложь камеры lowlightWhenAvailable: истинный 2013-10-25 10: 21: 53,429 aCoDriver [ 1019: 668f] LowLight активен: false Низкий уровень камерыWenAvailable: true 2013-10-25 10: 21: 53.679 aCoDriver [1019: 668f] LowLight активен: false Низкий уровень камерыWenAvable: true 2013-10-25 10: 21: 53.929 aCoDriver [ 1019: 668f] LowLight активен: false Низкий уровень камерыВозможно: true

+0

У вас было разрешение на это? – yonasstephen

+0

№. Я подозреваю, что это режим, когда я получаю изображение с камеры. Я получаю формат YUV. Я бы проверить, если это произойдет, если вы получите RGB. Если вы узнаете больше, сообщите мне. – tmanthey

+0

Вы пытались создать наблюдателя, как Jawboxer? Возможно, это поможет вам отладить и выяснить, активирован ли lowLightBoost вообще – yonasstephen

ответ

1

Из вашего кода я не уверен, почему это не сработает. Если это помогает, вот что я делаю - наряду с регистрацией для уведомлений, чтобы вы могли точно видеть, когда включение/выключение слабой подсветки включается/выключается (например, если вы указываете на камеру яркий свет, а затем положите ее вниз таблицу, вы должны получить уведомление, указывающее, что включено включение подсветки). Это отлично работает для меня в iOS 6/7:

AVCaptureDevice *device = _stillCamera.inputCamera; 
NSError *error; 

if(device.lowLightBoostSupported) { 
    // NSLog(@"low light is supported"); 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    BOOL boostEnabled = [prefs boolForKey:@"lowLightBoostEnabled"]; 

    if ([device lockForConfiguration:&error]) { 
     device.automaticallyEnablesLowLightBoostWhenAvailable = boostEnabled; 

     [device unlockForConfiguration]; 
    } 

    // register as an observer of changes to lowLightBoostEnabled 
    [device addObserver:self forKeyPath:@"lowLightBoostEnabled" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:NULL]; 
} 


// for observing changes to _stillCamera.inputCamera.lowLightBoostEnabled 
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 

    if ([keyPath isEqual:@"lowLightBoostEnabled"]) { 

     NSLog(@"lowLightBoostEnabled changed"); 

     NSNumber *boostIsActiveValue = [change objectForKey:NSKeyValueChangeNewKey]; 

     BOOL boostIsActive = boostIsActiveValue.boolValue; 

     NSLog(@"is low light boost currently active: %d", boostIsActive); 
    } 
} 
+0

Спасибо большое! К сожалению, это не работает на моем устройстве. lowLightBoostSupported истинно, и он устанавливает автоматическиEnablesLowLightBoostWhenAvailable в true. Но после этого lowLightBoostEnabled остается ложным, даже если я обернуваю устройство в одеяло. Думаю, я попробую ваше приложение. – tmanthey

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