2012-02-29 37 views
12

我的應用程序中有一項功能(音樂家的節拍器應用程序)可以調暗屏幕以節省電池壽命。設置亮度,我使用:無法恢復應用程序退出時的亮度

[UIScreen mainScreen].brightness = 0.1; 

我節省了應用程序的原始亮度的viewDidLoad(...)啓動和保存,爲我的用戶默認值。

當改變應用程序中的觀點,我檢索用戶默認原來的亮度和通話恢復:

[UIScreen mainScreen].brightness = originalBrightness; 

這工作得很好。我有NSLog(...)消息顯示原始值,等等...所以這個機制起作用。

我遇到的問題是如何爲Home鍵被按下恢復應用程序退出原來的亮度。

我加入了類似的代碼我的應用程序的委託方法:

applicationWillResignActive(...) 
applicationDidEnterBackground(...) 
applicationWillTerminate(...) 

他們每個人都有一個方法調用中有類似的NSLog的視圖之前設置屏幕亮度(...)■顯示檢索到原始亮度......並且全部正確。我也進行了調試,設置亮度的調用正在進行中...但應用程序退出,設備屏幕仍然處於較低的變暗級別。

最後,如果你點擊上方的「鎖定」按鈕,然後按Home鍵喚醒電腦...亮度是正確的。

我懷疑是任何行動或事件觸發與我的電話設置時,應用程序正在退出,通過是沒有得到,可能是由於無效狀態或類似的亮度。

而且,我的應用程序設置爲不運行在後臺,在info.plist中設置爲:

Application does not run in background  YES 

任何幫助,將不勝感激。

謝謝!

+1

這些私有API是什麼?我沒有在UIScreen類中看到mainWindow或mainWindows(typo?)屬性。你的意思是mainScreen? – picciano 2012-02-29 23:44:17

+0

是的,我的錯字。我是'[UIScreen mainScreen] .brightness = val;'或[[UIScreen mainScreen] setBrightness:val];' – Cal30 2012-03-01 14:34:23

+0

我很確定沒有辦法讓這個設置在您的應用程序之外持久存在。蘋果的文檔沒有具體說明這一點,但我已經看到了兩個其他亮度變化的應用程序,在這種情況下。有人[這裏](http:// stackoverflow。com/a/7901339/76810)同意。 – SSteve 2012-12-20 03:41:26

回答

1

iOS允許該應用程序在退出之前有一點時間。設置亮度後,您可以嘗試sleep幾分之一秒。

+0

@piccano我在這裏發帖後試過,但在代表無濟於事。我試過:[code] sleep()[/ code]以及[code] [Thread sleepForTimeInterval:] [/ code]但沒有改變。 – Cal30 2012-03-01 02:15:34

0

如果你讀https://devforums.apple.com/thread/139813小心地說,亮度的變化是不是永久性的。當您點擊鎖定按鈕並再次解鎖時,原始用戶的亮度會恢復。其實,我有,如果用戶點擊鎖定按鈕來恢復我的應用程序亮度的同時,我的應用程序正在運行:

- (void)applicationDidBecomeActive:(UIApplication *)application{ 
    [self setBrightness]; 
} 
0

沒有太多的喜悅。解決方法是重置ViewController viewWillDisappear上的亮度。不是一個很好的解決方案,但是我迄今爲止發現的唯一一個工作(這已被打破多年......)