【问题标题】:Turn off display in iPhone OS (iOS)在 iPhone OS (iOS) 中关闭显示
【发布时间】:2011-04-26 09:33:17
【问题描述】:

有没有办法以编程方式关闭 iOS 中的显示?不仅仅是调低亮度,而是像电话应用程序那样关闭。我很乐意使用私有 API,因为这是供个人使用的。

谢谢!

【问题讨论】:

  • 你能说说为什么电源按钮不适合你吗?

标签: iphone ios iphone-privateapi


【解决方案1】:

您可以通过启用接近监控来关闭显示。通过将手机靠近耳朵或将手指放在手机顶部的红外传感器上,它会自动关闭屏幕,就像在电话应用中一样。

[UIDevice currentDevice].proximityMonitoringEnabled = YES;

【讨论】:

  • 我可以通过某种方式设置接近度吗?我的意思是我不能以编程方式强迫用户靠近耳朵:) 我需要完全以编程方式将其变为黑色。
  • 我尝试在 UIDevice 上使用私有方法 _setProximity:(BOOL),但它没有关闭屏幕。
【解决方案2】:

您可以这样做,(当然,当然是使用私有 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

这里的“暗淡”是指完全关闭屏幕。这是系统在例如通话中发生接近事件。

【讨论】:

  • 你在 iOS 6 上试过了吗?它默默地失败(不做任何事情)。我的印象是它在内部检查某些权利。
  • 顺便说一句。我看到你在 Proximity Sensor 和 iPhoneDevWiki 上发布了一些有趣的东西。你介意给我发电子邮件吗(我的电子邮件在我的个人资料中)。我想让你问一件事。
  • iOS6 是对的,刚刚测试过。我添加了 iOS6 所需的代码以使其工作。
  • 再一次,它似乎仍然无法在 SpringBoard 以外的进程中工作......我会进一步查看并回复。
  • 看来您需要权利 com.apple.backboard.client。
【解决方案3】:

我知道的唯一方法,无论是公开的还是私人的,都是使用电源按钮。

你可以看看-[UIApplication setProximitySensingEnabled:(BOOL)],或者-[UIApplication setIdleTimerDisabled:YES],这可能会带来一些有用的东西

【讨论】:

    【解决方案4】:

    你试过了吗:

    [[UIScreen mainScreen] setBrightness: yourvalue];

    所以问题 8936999:iPhone: How can we programmatically change the brightness of the screen?

    【讨论】:

    • 谢谢。我明天试试。但是,我猜它只能在与 Preferences 应用程序相同的范围内控制亮度(它不会完全关闭显示,但可能会更暗)
    【解决方案5】:

    Proximity 并非在所有设备上都有效。这个问题有一个更简单的解决方案,无需借助私有 API。

    斯威夫特

    UIScreen.main.wantsSoftwareDimming = true
    UIScreen.main.brightness = 0.0
    

    没有wantsSoftwareDimming,背光将永远不会完全关闭。 文档中有这样的警示句:

    默认值为假。启用它可能会导致性能下降。

    【讨论】:

      【解决方案6】:

      我认为除了改变亮度之外没有任何关闭显示器(模拟 iphone 睡眠按钮)的方法。

      这个link 可能会有所帮助。

      【讨论】:

      • GSEventSetBacklightFactor 听起来像是正确的函数,但不幸的是它已从 SDK 中删除!有什么更换建议吗?
      • GSEventSetBacklightFactor 从未成为官方 SDK 的一部分,原因很简单,Apple 不希望您能够调整屏幕亮度或将其关闭,而不是他们想要的能够代表用户拨打电话或在应用商店购买。
      • GSEventSetBacklightFactor 已完全删除(它甚至不再是私有 API)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      相关资源
      最近更新 更多