totalmente quedo queda prendido prende pero pantalla negra muerto manzana esta enciende cayo cargando arranca iphone ios4

quedo - Detecta si la pantalla del iPhone está encendida/apagada



mi iphone no prende se queda en la manzana (3)

Sí, no hay un método definitivo. UIApplication tiene una propiedad protectedDataAvailable que devolverá YES cuando la pantalla está desbloqueada y NO si está bloqueada solo cuando el usuario habilita la protección de contenido . Entonces este es el más cercano pero poco confiable que puedo pensar. En tal caso, incluso puede escuchar las notificaciones UIApplicationProtectedDataDidBecomeAvailable y UIApplicationProtectedDataWillBecomeUnavailable .

¿Hay alguna manera de detectar si la pantalla de un iPhone está encendida o apagada? Por ejemplo, cuando se presiona el botón de bloqueo de pantalla del teléfono.

He estado usando (void)applicationWillResignActive:(UIApplication *)application; prepararse para tales eventos (que funciona bien en su mayor parte), pero este método también se activa para llamadas entrantes, textos, etc.

Por lo que puedo decir, no hay un método documentado para determinar esto.

He estado jugando con algunas soluciones, como comprobar si la resolución de la pantalla ha cambiado, verificar si la orientación es desconocida u obtener el brillo del dispositivo. Nada ha salido aún.

¿Alguien tiene alguna solución creativa / alternativa para esto?


Pruebe esta solución. El autor afirma que funciona bien en 4.2

Lo he comprobado en iOS 3.1 (iPhone 3G) - funciona bien.

actualización: no funciona en iOS 5 beta 7 (iPod Touch 4G) :-(

actualización2: la aplicación va al fondo cuando la pantalla está bloqueada, por lo que la solución está trabajando en iOS 5 beta 7 :-)


Puede usar las notificaciones de Darwin para escuchar los eventos. No estoy 100% seguro, pero me parece que, de ejecutar en un iPhone 4 con iOS 5.0.1 con jailbreak, uno de estos eventos podría ser lo que necesitas:

com.apple.iokit.hid.displayStatus com.apple.springboard.hasBlankedScreen com.apple.springboard.lockstate

Nota: de acuerdo con los comentarios del póster a una pregunta similar que respondí aquí , esto también debería funcionar en un teléfono sin jailbreak.

Para usar esto, regístrese para el evento de esta manera (esto se registra solo para un evento, pero si eso no funciona para usted, intente con los otros dos):

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center NULL, // observer displayStatusChanged, // callback CFSTR("com.apple.iokit.hid.displayStatus"), // event name NULL, // object CFNotificationSuspensionBehaviorDeliverImmediately);

donde displayStatusChanged es su devolución de llamada de evento:

static void displayStatusChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { NSLog(@"event received!"); // you might try inspecting the `userInfo` dictionary, to see // if it contains any useful info if (userInfo != nil) { CFShow(userInfo); } }

Creo que los eventos que enumeré arriba se activan cuando la pantalla se enciende y se apaga, se bloquea y se desbloquea. Es posible que deba rastrear el estado usted mismo. También,

com.apple.springboard.lockcomplete

solo se invoca cuando la pantalla se bloquea, no cuando se desbloquea.