detectando si el iPhone está en una habitación oscura

¿Hay alguna manera de usar el sensor de proximidad de iPhone para detectar si el teléfono está en una habitación sin luz?

Esta pregunta parece implicar que esto no es posible … ¿El iPhone permite sensores de Luz como entrada?

Esta es una forma mucho más simple de usar la cámara para descubrir qué tan shiny es una escena. (Obviamente, solo lee los datos que se pueden “ver” en el campo de visión de la cámara, por lo que no es un verdadero sensor de luz ambiental …)

Usando el marco AVFoundation, configure una entrada de video y luego, utilizando el marco de trabajo de ImageIO, lea los metadatos que vienen con cada fotogtwig de la transmisión de video (puede ignorar los datos de video reales):

#import  - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL, sampleBuffer, kCMAttachmentMode_ShouldPropagate); NSDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:(__bridge NSDictionary*)metadataDict]; CFRelease(metadataDict); NSDictionary *exifMetadata = [[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy]; float brightnessValue = [[exifMetadata objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue]; } 

Ahora tiene el valor de brillo para la escena actualizada (típicamente, puede configurar esto) 15-30 veces por segundo. Los números más bajos son más oscuros.

El sensor de proximidad no es lo que debería estar buscando. Sensor de luz ambiental es. Aparentemente esa API no está documentada o no está disponible para desarrolladores. Una forma alternativa de detectar si el iPhone está en una habitación oscura sería usar la cámara y obtener la luminosidad. Aquí hay una buena guía sobre cómo hacer eso,

http://b2cloud.com.au/tutorial/obtaining-luminosity-from-an-ios-camera/

Si estás haciendo algo de Realidad Aumentada usando ARKit, puedes obtener el valor de lightEstimate en cada fotogtwig del video de la ARSession .

Ver documentación sobre esto .

Aunque es posible acceder a los datos del sensor de luz ambiental a través del marco IOKit, Apple desalienta a los desarrolladores a usarlo, y cualquier aplicación que lo use será rechazada desde App Store.

Pero es posible deducir la luminosidad del entorno aproximadamente a través de la cámara. Eso es mediante la implementación de la cámara a través del marco de AVFoundation y el procesamiento de los metadatos que vienen a través de cada uno de los marcos de la cámara. Consulte esta respuesta a la pregunta: Cómo obtener el valor de la luz de AVFoundation