如何以编程方式检测背光已在 iOS 中打开



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

最初我认为这可能只是检查 UIScreen 的亮度属性的问题,如下所示:

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

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

Apple 显然有办法确定此值,因为它包含在可以在仪器中查看的能量诊断中(例如,请参阅在 iOS 设备中记录能源使用情况),但也许此测量尚未通过公共 API 公开?

一个可能对你有帮助的问题是:

更改背光级别,iPhone

似乎如果您包括以下内容:

#include "GraphicsServices.h"

然后使用这样的东西:

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

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

首先,

我尝试了@Flipper的答案,但它对我没有多大帮助,然后我对此进行了研发,并找到了使用以下代码的解决方案

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

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

相关内容

  • 没有找到相关文章

最新更新