SDK 是否提供任何方法来改变背光的亮度,或者暂时关闭它?
5 回答
我正在尝试做同样的事情。碰巧的是,互联网上有许多帖子为此提供了“解决方案”。
问题是我已经尝试过这些,它们都依赖于调用这个函数
GSEventSetBacklightLevel();
这需要导入此标头
#import <GraphicsServices/GraphicsServices.h>
并且在 SDK 报告找不到头文件时导入失败。
我已经搜索了一些解决方案,但没有找到。有一些关于“构建工具链”的讨论(有关我找到的最佳描述,请参见此处),但这似乎涉及完全绕过 SDK。相当激烈。
摘要:这是可能的,但不能使用标准的 iPhone SDK。我想 SDK 的更新很快就会到来,应该允许它。
如果您找到任何其他解决方案,请告诉我。
不,这在 SDK 中不可用。如果它是您认为有用的东西,我建议您提交增强请求。
-(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 项目来添加私有框架。
还要在您的 .h 文件中添加 #import "GraphicsServices.h" 标头。请记住:由于您使用的是私有框架,因此您的应用程序将在应用商店推送中拒绝
在我的 SDK (5.0.1) 中,“GraphicsServices.h”似乎不再存在,但您可以自己声明它:
void GSEventSetBacklightLevel(float level);
请注意,链接器会报错,除非您在项目中包含框架 GraphicsServices.framework。
关于您关于关闭背光的问题,我发现您可以通过将一个非常大的负数传递给 GSEventSetBacklightLevel 来做到这一点,如下所示:
GSEventSetBacklightLevel(-INFINITY);
在我的测试中,这将使屏幕完全变黑。
请记住,如果您显示静态图形,即使背光关闭,这仍可能导致 LCD 像素老化。如果提交到应用商店,此调用将导致拒绝。
试试这个代码。我希望它有帮助...
//在视图中将出现
float prevBrightnessLevel = [UIScreen mainScreen].brightness;
[UIScreen mainScreen].brightness = 1.0;
//在视图中将消失
[UIScreen mainScreen].brightness = prevBrightnessLevel;