Uso de la camera del iPhone como sensor de luminosidad

Estoy tratando de usar la camera frontal como un sensor de brillo (aparentemente no hay una API pública para el sensor de brillo por separado que se utiliza para ajustar el brillo de la pantalla).

He logrado configurar una session de captura de video y tomar fotogtwigs del video, usando AVCaptureVideoOutput, y calcular el brillo del marco. Sin embargo, la camera ajusta constantemente la configuration de exposition para compensar el brillo, lo que tiene mucho sentido para grabar videos, pero me impide get valores reales de brillo.

Por ejemplo, si pongo un dedo sobre la camera, el valor del brillo cae a 0 rápidamente, pero luego, después de unos segundos, vuelve a arrastrarse de nuevo mientras la camera compensa.

Entonces … ¿hay alguna forma de configurar manualmente la exposition y deshabilitar el ajuste automático? Intenté configurar AVCaptureDevice.exposureMode, pero no pareció hacer ninguna diferencia.

O bien, ¿hay alguna manera de get la información de exposition de la salida de captura de alguna manera, por lo que puedo sesgar apropiadamente mi cálculo de brillo?

ACTUALIZACIÓN: pude get la información EXIF ​​de esta manera; ahora solo necesito descubrir cómo sesgar mi cálculo de brillo.

NSDictionary* dict = (NSDictionary*) CMGetAttachment(sampleBuffer, kCGImagePropertyExifDictionary, NULL); NSString* exp = [nsDict objectForKey:@"ExposureTime"]; 

¿Recordó llamar a lockForConfiguration antes de configurar el modo de exposition?

Puede acceder a una variedad de metadatos utilizando CVBufferGetAttachment en el búfer de píxeles que puede get del búfer de muestra; probablemente incluya el estado de exposition.