【问题标题】:programmatically set screen to off in android在android中以编程方式将屏幕设置为关闭
【发布时间】:2012-12-04 05:50:02
【问题描述】:

如果在 1 分钟不活动后没有自动完成,我可以在 android 中以编程方式将屏幕设置为关闭吗?

这可以在 android 中以编程方式完成吗?

我发现了这个线程: Android: How to turn screen on and off programmatically?

Turning screen on and off programmatically not working on some devices

但 1 分钟后没有计时器。

【问题讨论】:

标签: android


【解决方案1】:

是的,在这种情况下最好使用的方法是以编程方式设置屏幕超时。

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 1000);

1000 以毫秒为单位,即 1 秒,您可以根据需要将其替换为任何值。

需要许可:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

更新

它会覆盖手机系统值(设置/显示/睡眠),所以也许你需要在完成后恢复当前设置:

private static final int SCREEN_OFF_TIME_OUT = 13000;
private int mSystemScreenOffTimeOut;
private void setScreenOffTimeOut() {
    try {
        mSystemScreenOffTimeOut = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);
        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, SCREEN_OFF_TIME_OUT);
    } catch (Exception e) {
        Utils.handleException(e);
    }
}

private void restoreScreenOffTimeOut() {
    if (mSystemScreenOffTimeOut == 0) return;
    try {
        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, mSystemScreenOffTimeOut);
    } catch (Exception e) {
        Utils.handleException(e);
    }
}

【讨论】:

  • 通过这种方式,您尝试设置默认系统屏幕超时,而不是仅针对您自己的应用程序。
  • 最终,您的应用必须使用系统才能关闭屏幕。应用程序本身无法关闭屏幕。应用上一分钟不活动与屏幕上一分钟不活动是一样的,对吧?
  • 如果我们使用Settings.System.SCREEN_OFF_TIMEOUT 设置屏幕超时,那么即使用户从应用程序移出,设置仍会重命名。
  • 是的,它就是这样工作的。否则另一个解决方法是为他安排一分钟的处理程序后,将屏幕超时设置为 1 秒,以便它快速关闭。然后使用广播接收器接收 ACTION_SCREEN_OFF 并将屏幕超时重置为旧值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2018-08-20
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
相关资源
最近更新 更多