solo responde personalizar pantalla noche nightshift muy luz herramientas funciona framework filtro desactivar controles brillo bloqueo bajo baja azul automatico autobrillo ambiental objective-c ios cocoa-touch iphone-4

objective c - responde - Leyendo el sensor de luz ambiental del iPhone



personalizar pantalla de bloqueo iphone ios 12 (4)

Para leer los datos del sensor de luz ambiental, debe usar IOHID en el marco IOKit.

http://iphonedevwiki.net/index.php/AppleISL29003

http://iphonedevwiki.net/index.php/IOKit.framework

Sin embargo, esto requiere encabezados privados, por lo que si lo usa, Apple probablemente no permita que su aplicación ingrese a la tienda de aplicaciones.

Continuamente pregunto a los foros de iOS si habrá soporte para las lecturas de los sensores de luz ambiental en el futuro, pero en vano.

Noté que en mi iPhone, después de unos segundos de estar bajo la luz directa del sol, la pantalla se ajustará para ser más brillante, más tenue, etc.

Tengo una aplicación que se utiliza fuera. Cuando entras a la luz directa, se vuelve muy difícil ver la pantalla durante algunos momentos, antes de que se ajuste. E incluso entonces, no siempre es tan brillante como me gustaría que fuera. Me gustaría implementar una máscara de alto contraste para la visualización en exteriores y un bajo contraste para la visualización en interiores.

¿Es posible leer los datos del sensor de luz y, de ser así, cómo extraigo estos valores del sensor?

Sin embargo, supongo que hay un sensor de luz, ya que la cámara sabe cuándo usar el flash.


Por otro lado, esta es una idea diferente (tal vez una tonta), utilizando el brillo de la pantalla del dispositivo, puede obtener algún valor de las condiciones externas.

De 0.12 (Oscuro) a 0.99 (Claro)

La siguiente línea obtendrá esos valores, pruébelo, encienda y apague algo sobre el dispositivo para obtener diferentes valores.

NSLog(@"Screen Brightness: %f",[[UIScreen mainScreen] brightness]);

Obviamente, la función de brillo automático debe estar activada para que esto funcione.

Saludos.


Puede usar la cámara para hacer esto, que es independiente de la configuración de brillo de la pantalla del usuario (y funciona incluso si el Brillo automático está desactivado).

Lees el valor de brillo de los metadatos de los marcos de video como explico en esta respuesta de desbordamiento de pila .


Intente usar GSEventSetBacklightLevel(); , que requiere <GraphicsServices/GraphicsServices.h> . Así es como uno puede ajustar programáticamente los niveles de brillo. También hay una opción de get , por lo que creo que puede tener la información que está buscando.