以编程方式更改iPhone上的背光亮度

时间:2008-12-14 19:34:41

标签: iphone backlight

SDK是否提供了改变背光亮度或暂时关闭背光的方法?

5 个答案:

答案 0 :(得分:5)

我正在尝试做同样的事情。 事实上,互联网上有一些帖子,其中有“解决方案”。

最详细的是here 这个更多succinct

问题在于我尝试了这些并且他们都依赖于调用此函数

GSEventSetBacklightLevel();

需要导入此标头

#import <GraphicsServices/GraphicsServices.h>

导致该导入在SDK报告中无法找到头文件。

我已经搜索了一些解决方案,但还没找到。 有一些关于“构建工具链”的讨论(为了最好的描述我发现here),但这似乎涉及完全绕过SDK。相当激烈。

总结:这是可能的,但不适用于标准的iPhone SDK。我想很快就会对SDK进行更新。

如果您找到任何其他解决方案,请告诉我。

答案 1 :(得分:1)

没有。这在SDK中不可用。如果你认为这是有用的,我建议你file an enhancement request

答案 2 :(得分:0)

-(void)changeLight{

    GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}

使用

调用上述方法
[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];

您可以通过从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.//拖放到您的xcode项目来添加私有框架。 p>

在你的.h文件中添加#import“GraphicsServices.h”标题.. 记住:因为你使用私有框架,你的应用程序会在app store push中拒绝

答案 3 :(得分:0)

在我的SDK(5.0.1)中,似乎“GraphicsServices.h”不再存在,但您可以像这样自己声明:

void GSEventSetBacklightLevel(float level);

请注意,除非您在项目中包含框架GraphicsServices.framework,否则链接器会抱怨。

关于关闭背光的问题,我发现你可以通过将一个非常大的负数传递给GSEventSetBacklightLevel来实现,如下所示:

GSEventSetBacklightLevel(-INFINITY);

在我的测试中,这将完全遮挡屏幕。

请记住,如果显示静态图形,即使背光关闭,这仍可能导致LCD像素老化。如果提交给app store,这个电话会导致拒绝。

答案 4 :(得分:0)

试试这段代码。我希望它有所帮助...

  

//在viewWillAppear

中      

float prevBrightnessLevel = [UIScreen mainScreen] .brightness;

     

[UIScreen mainScreen] .brightness = 1.0;

     

//在viewWillDisappear

中      

[UIScreen mainScreen] .brightness =   prevBrightnessLevel;