Pregunta

Yo estaba trabajando en mi aplicación recientemente y quería cambiar el brillo de la luz de fondo. Entonces quería restaurar el nivel de luz de fondo para que la configuración original al salir de la aplicación. Aquí está el código:

#include "GraphicsServices.h"

- (void) viewWillAppear:(BOOL)animated
{

NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"),     CFSTR("com.apple.springboard")); // To retrieve backlight settings
    prevBacklightLevel = [bl floatValue];

GSEventSetBacklightLevel(0.5f); 

}

// Other code here...    

- (void)applicationWillTerminate
{
    GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}

La luz de fondo cambia correctamente en cargar la aplicación, sin embargo, cuando el usuario sale, los restos de luz de fondo en el nivel establecido por la aplicación ... lo inconveniente!

¿Puede cualquiera que me ayude por qué esto no está funcionando como se esperaba, estoy haciendo nada, obviamente mal?

No podía encontrar mucha información en la web con respecto a este tema.

ViewController.h requiere

#import "GraphicsServices.h"

también.

Editar // ¿Alguien puede ayudar con este problema:

Cuando la aplicación está cerrada nivel de retroiluminación cambia, pero siempre a 0, independientemente de lo que estaba antes de que se ejecutó la aplicación. Posiblemente bl es siempre 0, por alguna razón?

Muchas gracias,

Stu

¿Fue útil?

Solución

descubierto la respuesta. Fue un error ... error tonto realmente básico. Tenía:

- (void)applicationWillTerminate

ViewController.m en lugar de AppDelegate.m

Ahora funciona perfectamente.

Espero que esto ayude a alguien por ahí con un problema similar,

Stu

Otros consejos

el fin de controlar el brillo dentro de la aplicación es una idea interesante. Sin embargo, el uso de esta cadena será una causa de rechazo. (Consulte la enlace ).

Bueno, ... no sé cómo restaurar el nivel después de las salidas de usuario. Por lo tanto, voy a presentar dos APIs para usted. Son la forma en Mac OS X.

CFPreferencesSetAppValue() y CFPreferencesAppSynchronize()

Si resuelve el problema, por favor indicar el código correcto para los otros desarrolladores, incluirme. ; -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top