Вопрос

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

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

также.

Редактировать // Кто-нибудь может помочь с этой проблемой:

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

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

Стю

Это было полезно?

Решение

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

- (void)applicationWillTerminate

в ViewController.m, а не в AppDelegate.m

Теперь это работает идеально.

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

Стю

Другие советы

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

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

CFPreferencesSetAppValue() и CFPreferencesAppSynchronize()

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top