【问题标题】:Turning screen off关闭屏幕
【发布时间】:2009-07-27 18:44:08
【问题描述】:

我需要在 iPhone 不进入睡眠状态的情况下运行我的应用程序。但我想关掉屏幕。当您在电话中讲话时,电话应用程序中也会执行类似的操作。

我通过以下方式阻止 iPhone 进入睡眠状态: [[UIApplication sharedApplication] setIdleTimerDisabled: YES];

但是我怎样才能关闭屏幕呢?当用户触摸屏幕时,如何将其转回?

谢谢。

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案1】:

    更新:此方法已被弃用。请参阅下面 Timothée Boucher 的评论。


    您可以通过接近传感器关闭屏幕,但没有其他公开方式可以让屏幕进入睡眠状态。

    -[UIApplication setProximitySensingEnabled:(BOOL)]
    

    【讨论】:

    • 对于阅读本文的任何人,在我发表评论时,该方法已被弃用。来自 Apple 的文档:“已弃用。UIDevice 类的属性 proximityMonitoringEnabledproximityState 是替代品。”
    【解决方案2】:

    好吧,您可以完全关闭亮度。它不锁定屏幕,设备仍然显示,但没有 LCD 背光,几乎看不到。

    - (void) changeSystemBrightness: (NSString *) switchValue {
    
    if ([[UIScreen mainScreen] respondsToSelector:@selector(setBrightness:)]) {
        if (switchValue) {
            if ([switchValue isEqualToString:@"saveDefault"]) {
                //
                self.userBrightness = [UIScreen mainScreen].brightness;
                //NSLog(@"User Brightness: %1.1f", userBrightness);
            } else if ([switchValue isEqualToString:@"restoreDefault"]) {
                [UIScreen mainScreen].brightness = self.userBrightness;
                //NSLog(@"Restore Brightness: %1.1f", userBrightness);
            } else if ([switchValue isEqualToString:@"min"]) {
                //[UIScreen mainScreen].brightness = 0;
            } else if ([switchValue isEqualToString:@"max"]) {
                [UIScreen mainScreen].brightness = 1;
            } else if ([switchValue isEqualToString:@"mid"]) {
                [UIScreen mainScreen].brightness = 0.5;
            }
        } else {
            [UIScreen mainScreen].brightness = self.userBrightness;
            //NSLog(@"Restore Brightness: %1.1f", userBrightness);
        }
    }
    

    }

    先保存用户的系统亮度等级

    [self changeSystemBrightness:@"saveDefault"];  
    

    之后,您可以简单地关闭屏幕:

    [self changeSystemBrightness:@"min"];  
    

    恢复亮度:

    [self changeSystemBrightness:@"restoreDefault"];  
    

    一旦屏幕正常关闭(锁定/解锁),iOS 就会恢复默认系统亮度,因此您必须检测并处理它。

    【讨论】:

      【解决方案3】:

      我无法确认这是一项公共功能,但我知道有一个接近传感器可以感应手机是否靠近您的脸。尝试深入研究并确定该传感器是否公开可用,然后哪个功能可能会关闭屏幕。

      【讨论】:

        【解决方案4】:

        没有官方(公共)编程方式来打开或关闭屏幕,甚至改变显示器的亮度。一些应用程序通过在视图顶部叠加透明的黑色视图并更改其不透明度以呈现亮度变化的外观来“伪造”亮度变化(不过,背光将保持亮起,因此它永远不会看起来屏幕已关闭,您不会节省任何电池)。

        【讨论】:

          【解决方案5】:

          你可以使用未记录的函数 GSEventSetBacklightFactor(1);这会使屏幕变暗。如果您将 1 替换为 0,您的屏幕将关闭。然后你必须按下主页按钮。使用这个你必须导入一个私有框架图形服务框架

          【讨论】:

          • 不能用“GSEventSetBacklightFactor(1);”开启在具有 3.1.2 框架的设备上。即使主页按钮也无济于事,只能重新启动设备(Home+Sleep 10 秒)。它适用于模拟器。设备未破解。
          • @slatvick - 你的意思是not jailbroken,而不是uncracked。我希望它没有被破解。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 2012-03-06
          相关资源
          最近更新 更多