如何在iOS中以编程方式检测背光?

时间:2012-08-06 18:06:37

标签: objective-c ios backlight

我想要显示屏幕是否点亮的iOS代码,以便我的应用程序可以监控(耗电)背光活动导致的电池电量消耗。此代码必须仅使用公共API,因为我打算最终将应用程序提交到App Store。

最初我认为这可能仅仅是检查UIScreen的brightness属性,如下所示:

-(BOOL)isBackLightOn {
    float brightness = [UIScreen mainScreen].brightness;
    return brightness > 0;
}

不正确,因为[UIScreen mainScreen].brightness表示用户在“设置” - >“亮度”屏幕中选择的滑块值,不是当前指示灯屏幕输出。

Apple显然有办法确定这个值,因为它包含在能够在仪器中查看的能量诊断中(例如参见Logging Energy Usage in an iOS Device),但是这个测量可能还没有通过公共API公开?

2 个答案:

答案 0 :(得分:0)

可能对此有帮助的问题是:

Changing Backlight Level, iPhone

似乎如果你包括这个:

#include "GraphicsServices.h"

然后使用这样的东西:

NSNumber *bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel" ), CFSTR("com.apple.springboard"));
float previousBacklightLevel = [bl floatValue];

应该给你背光水平。请记住,屏幕总是会有某种形式的背光。

答案 1 :(得分:0)

我首先尝试了@ Flipper的答案,但是我没有帮助我很多,而且我已经找到了R& D并且我找到了一个带有以下代码的解决方案

    NSLog(@"%f", [[[NSMutableDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.apple.springboard.plist"] objectForKey:@"SBBacklightLevel2"] floatValue]);

它给我浮点值,设备的当前亮度等级