Change Backlight Brightness on iPhone Programmatically

孤者浪人 提交于 2019-11-26 14:42:21

问题


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


回答1:


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




回答2:


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.




回答3:


-(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




回答4:


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.




回答5:


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;



来源:https://stackoverflow.com/questions/366889/change-backlight-brightness-on-iphone-programmatically

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!