2009-11-23 8 views
1

Недавно я работал над своим приложением и хотел изменить яркость подсветки. Затем я хотел восстановить уровень подсветки до его первоначальной настройки при выходе из приложения. Вот код:Восстановить подсветку до предыдущего уровня, iPhone

#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 
} 

изменения подсветки правильно при загрузке приложения, но при выходе пользователя, подсветка остается на уровне, установленном приложением ... как неудобно!

Может ли кто-нибудь помочь мне в том, почему это не работает должным образом, я делаю что-то явно неправильно?

Я не мог найти много информации в Интернете относительно этой проблемы.

ViewController.h требует

#import "GraphicsServices.h" 

также.

Edit // Может кто-нибудь помочь с этой проблемой:

Когда приложение закрывается уровень подсветки делает изменения, но всегда 0, независимо от того, что это было в до приложение было работать. Возможно, по какой-то причине bl всегда 0?

Большое спасибо,

Stu

+0

Если вам нужна дополнительная информация, чтобы ответить на этот вопрос, и я не предоставил его, просто прокомментируйте и я отредактирую свой вопрос. – Stumf

ответ

1

Обнаружен ответ. Это была действительно основная ошибка ... глупая ошибка. У меня было:

- (void)applicationWillTerminate 

в ViewController.m, а не AppDelegate.m

Он теперь работает отлично.

Я надеюсь, что это помогает кто-то там с подобной проблемой,

Stu

1

Для проверочных яркостей в приложении является интересной идеей. Однако использование этой строки будет причиной отказа. (См. link.)

Ну, ... Я не знаю, как восстановить уровень после выхода пользователя. Поэтому позвольте мне представить вам два API. Они так на Mac OS X.

CFPreferencesSetAppValue() и CFPreferencesAppSynchronize()

Если решить эту проблему, пожалуйста, запишите правильный код для других разработчиков, включить меня. ;-)

+0

Прошу прощения, что я не знаю вашего последнего сообщения. – KatokichiSoft

+0

Если вы используете тот же метод, что и у меня, вам нужно добавить структуру и заголовок GraphicsServices в свой проект. Я изменю свой вопрос, чтобы показать это. – Stumf