2009-07-27 4 views
7

Мне нужно, чтобы мое приложение работало без того, чтобы iPhone не спал. Но я бы хотел выключить экран. Что-то подобное делается в приложении «Телефон», когда вы разговариваете по телефону.Отключение экрана

Я запрещаю iPhone переходить в спящий режим следующим образом: [[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Но как я могу отключить экран? И как мне повернуть его обратно, когда пользователь коснулся экрана?

Спасибо.

ответ

5

Обновление: Этот метод устарел. См. Комментарий Тимофея Баучера ниже.


Вы можете отключить экран с помощью датчика приближения, но нет другого способа открыть экран для сна.

-[UIApplication setProximitySensingEnabled:(BOOL)] 
+2

Для всех, кто читает это, во время моего комментария, метод устарел. Из документации Apple: «Устаревшие. Свойства« proximityMonitoringEnabled »и« proximityState »класса' UIDevice' являются заменами ». –

0

Я не могу подтвердить, что это общедоступная функциональность, но я знаю, что есть датчик приближения, который может определить, находится ли телефон рядом с вашим лицом или нет. Попробуйте выполнить копание и выяснить, доступен ли этот датчик, и какая функция может отключить экран.

0

Нет официального (общедоступного) программного способа включения или выключения экрана или даже изменения яркости дисплея. Несколько приложений «поддельные» меняют яркость, накладывая прозрачный черный вид поверх вашего представления и изменяя его непрозрачность, чтобы придать видимость изменения яркости (подсветка останется включенной, хотя она никогда не будет выглядят как экран выключен, и вы не будете экономить батарею).

0

я Таир путь вы можете использовать недокументированные функции GSEventSetBacklightFactor (1); это сделает экран тусклым. если вы замените 1 на 0, ваш экран будет выключен. то вам нужно нажать кнопку home.for, чтобы использовать это, вам нужно импортировать рамочную инфраструктуру каркаса рамок

+0

Невозможно включить «GSEventSetBacklightFactor (1)»; на устройстве с каркасом 3.1.2. Даже кнопка «домой» не помогает, но только перезагружает устройство («Домой + спящий 10 секунд»).Он работает на симуляторе. Устройство не отслеживается. – slatvick

+0

@slatvick - Вы имеете в виду 'не jailbroken', а не' uncracked'. Надеюсь, это не треснет. – Moshe

2

Ну, вы можете полностью отключить яркость. Он не блокирует экран, и устройство все еще отображается, но подсветка ЖК-дисплея почти не видна.

- (void) changeSystemBrightness: (NSString *) switchValue { 

if ([[UIScreen mainScreen] respondsToSelector:@selector(setBrightness:)]) { 
    if (switchValue) { 
     if ([switchValue isEqualToString:@"saveDefault"]) { 
      // 
      self.userBrightness = [UIScreen mainScreen].brightness; 
      //NSLog(@"User Brightness: %1.1f", userBrightness); 
     } else if ([switchValue isEqualToString:@"restoreDefault"]) { 
      [UIScreen mainScreen].brightness = self.userBrightness; 
      //NSLog(@"Restore Brightness: %1.1f", userBrightness); 
     } else if ([switchValue isEqualToString:@"min"]) { 
      //[UIScreen mainScreen].brightness = 0; 
     } else if ([switchValue isEqualToString:@"max"]) { 
      [UIScreen mainScreen].brightness = 1; 
     } else if ([switchValue isEqualToString:@"mid"]) { 
      [UIScreen mainScreen].brightness = 0.5; 
     } 
    } else { 
     [UIScreen mainScreen].brightness = self.userBrightness; 
     //NSLog(@"Restore Brightness: %1.1f", userBrightness); 
    } 
} 

}

Первый сохранить уровень яркости системы пользователя

[self changeSystemBrightness:@"saveDefault"]; 

После этого вы можете просто выключить экран:

[self changeSystemBrightness:@"min"]; 

Восстановление яркости:

[self changeSystemBrightness:@"restoreDefault"]; 

iOS восстанавливает стандартную яркость системы после того, как экран выключен нормально (блокировка/разблокировка), поэтому вам нужно его обнаружить и обработать.

Смежные вопросы