2009-07-27 130 views
7

我需要我的應用程序在沒有iPhone入睡的情況下運行。但我想關閉屏幕。當你在電話上講話時,Phone應用程序中會做類似的事情。關閉屏幕

我避免iPhone將在下面的辦法睡覺: [UIApplication的sharedApplication] setIdleTimerDisabled:YES];

但是如何關閉屏幕?如何在用戶觸摸屏幕時將其返回?

謝謝。

回答

5

更新:此方法已被棄用。請參閱下面的TimothéeBoucher的評論。


您可以通過接近傳感器關閉屏幕,但沒有其他公開的方法可讓屏幕進入睡眠狀態。

-[UIApplication setProximitySensingEnabled:(BOOL)] 
+2

對於閱讀此內容的任何人,在我發表評論時,該方法已被棄用。從Apple的文檔:「已棄用。」UIDevice「類的」proximityMonitoringEnabled「和」proximityState「屬性是替代品。」 – 2010-02-25 00:21:34

0

我無法確認這是公共功能,但我知道有一個接近傳感器可以檢測手機是否接近您的臉。嘗試挖掘並確定該傳感器是否公開可用,然後關閉哪個功能。

0

沒有官方(公共)編程方式來打開或關閉屏幕,甚至不改變顯示器的亮度。有些應用程序通過在視圖頂部加上透明的黑色視圖並改變其不透明度以使亮度發生變化(但背光仍然保持亮起),從而永遠不會發生亮度變化,從而「僞造」亮度變化看起來像屏幕關閉,你不會保存任何電池)。

0

ya thair是您可以使用未記錄函數的方式GSEventSetBacklightFactor(1);這將使屏幕變暗。如果你用0代替1,你的屏幕將會關閉。那麼你必須按主頁button.for使用這個你必須導入一個priate框架graphicservice框架

+0

無法使用「GSEventSetBacklightFactor(1);」在具有3.1.2框架的設備上。即使主頁按鈕也沒有幫助,但只能重新啓動設備(主頁+睡眠10秒)。它在模擬器上工作。該設備是未破解的。 – slatvick 2009-11-07 12:13:43

2

那麼,你可以完全關閉亮度。它不會鎖定屏幕,並且設備仍然顯示,但沒有LCD背光燈幾乎不可能看到。

- (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恢復默認系統亮度,因此您必須檢測並處理該問題。