2012-02-29 39 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上的亮度。不是一个很好的解决方案,但是我迄今为止发现的唯一一个工作(这已被打破多年......)