Change Backlight Brightness on iPhone Programmatic

2019-01-09 13:59发布

Does the SDK provide any way to change the brightness of the backlight, or turn it off temporarily?

5条回答
ゆ 、 Hurt°
2楼-- · 2019-01-09 14:34

No. This is not available in the SDK. If it's something you think would be useful, I suggest you file an enhancement request.

查看更多
放我归山
3楼-- · 2019-01-09 14:35

In my SDK (5.0.1) it seems that "GraphicsServices.h" is no longer there, but you can declare it yourself like this:

void GSEventSetBacklightLevel(float level);

Note that the linker will complain, unless you include the framework GraphicsServices.framework in your project.

About your question about turning the backlight off, I found out that you can do it by passing a very large negative number to GSEventSetBacklightLevel, like this:

GSEventSetBacklightLevel(-INFINITY);

In my tests this will completely black out the screen.

Remember that this might still cause burn-in in the LCD pixels if you display static graphics, even when the backlight is off. And that this call will cause rejection if submitteed to app store.

查看更多
劳资没心,怎么记你
4楼-- · 2019-01-09 14:45

try this code. i hope it helps...

//in viewWillAppear

float prevBrightnessLevel = [UIScreen mainScreen].brightness;

[UIScreen mainScreen].brightness = 1.0;

//in viewWillDisappear

[UIScreen mainScreen].brightness = prevBrightnessLevel;

查看更多
We Are One
5楼-- · 2019-01-09 14:49
-(void)changeLight{

    GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}

call the above method using

[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];

you can add the private framework by just drag and drop to your xcode project from /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.

Also add #import "GraphicsServices.h" header in your .h file..remember: since you are using private framework you application will reject in app store push

查看更多
时光不老,我们不散
6楼-- · 2019-01-09 14:54

I'm trying to do the same thing. As it happens there are a number posts out there in the internets with "solutions" for this.

The most detailed is here This one is more succinct

The problem is that I've tried these and they all rely on calling this function

GSEventSetBacklightLevel();

which requires this header to be imported

#import <GraphicsServices/GraphicsServices.h>

And that import fails in the SDK reporting that the header file cannot be found.

I've searched for some solution but haven't found it. There is some talk about "building the toolchain" (for the best description I've found see here) but that seems to involve bypassing the SDK altogether. Pretty drastic.

Summary: It's possible, but not with the standard iPhone SDK. I imagine an update to the SDK will come soon that should allow for it.

Let me know if you find any other solution.

查看更多
登录 后发表回答