我想要显示屏幕是否点亮的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公开?
答案 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]);
它给我浮点值,设备的当前亮度等级