有没有办法以编程方式关闭iOS中的显示?不只是降低亮度,而是关闭电话应用程序的方式。我很乐意使用私有API,因为这是供个人使用。
谢谢!
答案 0 :(得分:23)
您可以通过启用接近监控来关闭显示屏。它会自动关闭屏幕,就像在手机应用程序中一样,将手机靠近耳朵或将手指放在手机顶部的红外传感器上。
[UIDevice currentDevice].proximityMonitoringEnabled = YES;
答案 1 :(得分:14)
你可以这样做(显然,使用私有API):
在iOS5上:
#include <stdio.h>
#include <dlfcn.h>
int (*SBSSpringBoardServerPort)() = (int (*)())dlsym(RTLD_DEFAULT, "SBSSpringBoardServerPort");
int port = SBSSpringBoardServerPort();
void (*SBDimScreen)(int _port,BOOL shouldDim) = (void (*)(int _port,BOOL shouldDim))dlsym(RTLD_DEFAULT, "SBDimScreen");
然后使用
SBDimScreen(port,YES);
每当你想昏暗时,
SBDimScreen(port,NO);
每当你想要解开时。
在iOS6上:
void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");
然后使用:
BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim
“Dim”在这里意味着完全关闭屏幕。这是系统在例如在通话中发生接近事件。
答案 2 :(得分:4)
我所知道的唯一公共或私人方式是使用电源按钮。
您可以查看-[UIApplication setProximitySensingEnabled:(BOOL)]
或-[UIApplication setIdleTimerDisabled:YES]
,这可能会带来一些有用的信息
答案 3 :(得分:0)
你试过了吗?
[[UIScreen mainScreen] setBrightness: yourvalue];
问题8936999:iPhone: How can we programmatically change the brightness of the screen?
答案 4 :(得分:0)
接近不适用于所有设备。对于这个问题,有一个更简单的解决方案,而不需要使用私有API。
<强>夫特强>
master
如果没有UIScreen.main.wantsSoftwareDimming = true
UIScreen.main.brightness = 0.0
,背光将永远不会完全关闭。
文档有这个警示句:
默认值为false。启用它可能会导致性能下降。
答案 5 :(得分:-1)
除了改变亮度之外,我认为没有关闭显示器(模拟iphone睡眠按钮)。
这link可能会有所帮助。