将背光恢复到上一级,iPhone

时间:2009-11-23 23:36:51

标签: iphone objective-c plist restore backlight

我最近正在开发我的应用程序,并希望改变背光的亮度。然后,我想在退出应用程序时将背光级别恢复为原始设置。这是代码:

#include "GraphicsServices.h"

- (void) viewWillAppear:(BOOL)animated
{

NSNumber* bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel"),     CFSTR("com.apple.springboard")); // To retrieve backlight settings
    prevBacklightLevel = [bl floatValue];

GSEventSetBacklightLevel(0.5f); 

}

// Other code here...    

- (void)applicationWillTerminate
{
    GSEventSetBacklightLevel(prevBacklightLevel); // To restore to original level
}

在加载应用程序时背光会正确变化,但当用户退出时,背光仍然保持在应用程序设置的水平......多么不方便!

可以帮助我解释为什么这不能按预期工作,我做了什么明显的错误吗?

我在网上找不到有关此问题的更多信息。

ViewController.h需要

#import "GraphicsServices.h"

编辑//任何人都可以帮助解决这个问题:

当应用程序关闭时,背光级别会发生变化,但总是为0,无论应用程序运行之前的状态如何。由于某些原因,bl可能总是0?

非常感谢,

斯图

2 个答案:

答案 0 :(得分:1)

发现了答案。这是一个非常基本的错误......愚蠢的错误。我有:

- (void)applicationWillTerminate
ViewController.m中的

而不是AppDelegate.m

它现在完美无缺。

我希望这可以帮助那些有类似问题的人,

斯图

答案 1 :(得分:1)

控制应用程序内的亮度是一个有趣的想法。但是,使用此字符串将导致拒绝。 (参见link。)

嗯,...我不知道如何在用户退出后恢复级别。因此,让我向您介绍两个API。它们是Mac OS X上的方式。

CFPreferencesSetAppValue()CFPreferencesAppSynchronize()

如果你解决了这个问题,请为其他开发者写下正确的代码,包括我。 ; - )