Измените яркость подсветки на iPhone программно
Вопрос
Предоставляет ли SDK какой-либо способ изменить яркость подсветки или временно отключить ее?
Решение
Нет.Это недоступно в SDK.Если это что-то, что, по вашему мнению, было бы полезно, я предлагаю вам подать запрос на улучшение.
Другие советы
Я пытаюсь сделать то же самое.Так получилось, что в Интернете есть несколько постов с "решениями" для этого.
Наиболее подробным является здесь Это нечто большее лаконичный
Проблема в том, что я пробовал их, и все они полагаются на вызов этой функции
GSEventSetBacklightLevel();
для чего требуется импортировать этот заголовок
#import <GraphicsServices/GraphicsServices.h>
И этот импорт завершается с ошибкой в SDK, сообщающем, что файл заголовка не может быть найден.
Я искал какое-нибудь решение, но не нашел его.Есть некоторые разговоры о "создании цепочки инструментов" (лучшее описание, которое я нашел, см. здесь) но это, похоже, предполагает полный обход SDK.Довольно радикально.
Краткие сведения:Это возможно, но не со стандартным iPhone SDK.Я предполагаю, что скоро выйдет обновление SDK, которое должно позволить это.
Дайте мне знать, если найдете какое-либо другое решение.
-(void)changeLight{
GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}
вызовите приведенный выше метод, используя
[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];
вы можете добавить частный фреймворк, просто перетащив его в свой проект xcode из /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.
Также добавьте заголовок #import "GraphicsServices.h" в ваш файл .h..вспомни:поскольку вы используете private framework, ваше приложение отклонит push-запрос в App Store
В моем SDK (5.0.1) кажется, что "GraphicsServices.h" больше не существует, но вы можете объявить его самостоятельно следующим образом:
void GSEventSetBacklightLevel(float level);
Обратите внимание, что компоновщик будет жаловаться, если вы не включите фреймворк GraphicsServices.framework в свой проект.
Что касается вашего вопроса об отключении подсветки, я выяснил, что вы можете сделать это, передав очень большое отрицательное число в GSEventSetBacklightLevel, вот так:
GSEventSetBacklightLevel(-INFINITY);
В моих тестах это полностью затемнит экран.
Помните, что это все равно может привести к выгоранию пикселей ЖК-дисплея, если вы отображаете статичную графику, даже при выключенной подсветке.И что этот вызов вызовет отклонение, если он будет отправлен в app Store.
попробуйте этот код.я надеюсь, что это поможет...
//в поле зрения появится
float prevBrightnessLevel = [Главный экран пользовательского интерфейса].яркость;
[Главный экран UIScreen]. яркость = 1,0;
//в поле зрения исчезнет
[Главный экран пользовательского интерфейса]. яркость = Предыдущий уровень яркости;