2

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

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

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

但这是不正确的,因为它[UIScreen mainScreen].brightness代表的是用户在 Settings->Brightness 屏幕中选择的滑块的值,而不是屏幕的当前光输出。

Apple 显然有办法确定这个值,因为它包含在可以在 Instruments 中查看的能源诊断中(例如,请参阅Logging Energy Usage in an iOS Device),但也许这个测量没有通过公共 API 公开?

4

2 回答 2

0

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

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

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

于 2013-01-04T07:14:45.280 回答
0

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

更改背光级别,iPhone

似乎如果你包括这个:

#include "GraphicsServices.h"

然后使用这样的东西:

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

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

于 2012-08-06T18:19:51.707 回答