notes app iphone ios iphone-privateapi

iphone - app - ios 12



Desactivar visualizaciĆ³n en iPhone OS(iOS) (6)

Has probado:

[[UIScreen mainScreen] setBrightness: yourvalue];

SO question 8936999: iPhone: ¿Cómo podemos cambiar programáticamente el brillo de la pantalla?

¿Hay alguna forma de apagar programáticamente la pantalla en iOS? No solo para reducir el brillo, sino también para desactivarlo como lo hace la aplicación de teléfono. Estoy feliz de usar la API privada, ya que es para uso personal.

¡Gracias!


La única forma que conozco, pública o privada, es usando el botón de encendido.

Puede consultar -[UIApplication setProximitySensingEnabled:(BOOL)] , o -[UIApplication setIdleTimerDisabled:YES] , esto podría llevar a algo útil


La proximidad no funciona en todos los dispositivos. Hay una solución mucho más simple para este problema sin tener que recurrir a API privadas.

Rápido

UIScreen.main.wantsSoftwareDimming = true UIScreen.main.brightness = 0.0

Sin wantsSoftwareDimming , la luz de fondo nunca se apagará por completo. Los documentos tienen esta frase de advertencia:

El valor predeterminado es falso. Habilitarlo puede causar una pérdida de rendimiento.


No creo que haya nada para apagar la pantalla (simulando el botón de apagado del iPhone), excepto para cambiar el brillo.

Este link puede ayudar.


Puede apagar la pantalla habilitando el monitoreo de proximidad. Apagará automáticamente la pantalla, como en la aplicación Teléfono, colocando el teléfono cerca de sus oídos o colocando un dedo sobre el sensor IR en la parte superior del teléfono.

[UIDevice currentDevice].proximityMonitoringEnabled = YES;


Puedes hacer esto (obviamente, usando API privadas, por supuesto):

en iOS5:

#include <stdio.h> #include <dlfcn.h> int (*SBSSpringBoardServerPort)() = (int (*)())dlsym(RTLD_DEFAULT, "SBSSpringBoardServerPort"); int port = SBSSpringBoardServerPort(); void (*SBDimScreen)(int _port,BOOL shouldDim) = (void (*)(int _port,BOOL shouldDim))dlsym(RTLD_DEFAULT, "SBDimScreen");

y luego usar

SBDimScreen(port,YES);

cuando quieras atenuar, y

SBDimScreen(port,NO);

siempre que quieras desestimar.

En iOS6:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");

y luego usar:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim

"Oscuro" significa aquí apagar totalmente la pantalla. Esto es lo que utiliza el sistema cuando, por ejemplo, se produce un evento de proximidad durante una llamada.