27

只是想知道是否可以使用 Android 中的代码更改屏幕超时

在此处输入图像描述

4

5 回答 5

50

做起来很简单。你应该从Android源代码中学习解决你的问题。

  /**
   * set screen off timeout
   * @param screenOffTimeout int 0~6
   */
private void setTimeout(int screenOffTimeout) {
    int time;
    switch (screenOffTimeout) {
    case 0:
        time = 15000;
        break;
    case 1:
        time = 30000;
        break;
    case 2:
        time = 60000;
        break;
    case 3:
        time = 120000;
        break;
    case 4:
        time = 600000;
        break;
    case 5:
        time = 1800000;
        break;
    default:
        time = -1;
    }
    android.provider.Settings.System.putInt(getContentResolver(),
            Settings.System.SCREEN_OFF_TIMEOUT, time);
}
于 2012-05-25T05:36:33.490 回答
13

更好的解决方案是执行以下操作之一(取决于您希望它是动态的还是静态的):

  1. 在布局(xml)中指定属性android:keepScreenOn(即始终无限期地防止屏幕超时),
  2. WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON创建活动时添加标志,或
  3. 使用 aWakeLock控制屏幕应该打开多长时间(动态)
于 2012-10-16T00:51:24.550 回答
8

将屏幕超时设置为 -1 似乎并不能准确地完成所需的工作。

我发现将值设置为 Integer.MAX_VALUE 效果更好。

例如:

android.provider.Settings.System.putInt(内容, Settings.System.SCREEN_OFF_TIMEOUT, Integer.MAX_VALUE);

这似乎将最大超时设置为设备允许的最大值。

例如,如果导航到手机上的显示设置时,只允许您拥有 30 分钟的最大屏幕超时,则执行上述代码会将屏幕超时设置为 30 分钟。

于 2015-11-08T15:39:32.153 回答
5

如果有人需要将其设置为从不,这里是代码

Settings.System.putString(cr, Settings.System.SCREEN_OFF_TIMEOUT, "-1");
于 2012-05-25T07:13:46.010 回答
0

试试这个。只需将 3000 更改为您想要的任何屏幕输出时间。确保您提供更改系统设置权限。

try {
    int mSystemScreenOffTimeOut = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);
    Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 3000);
} catch (Exception e) {
    Toast.makeText(this, "Permission Error", Toast.LENGTH_SHORT).show();
}
于 2020-10-09T15:32:16.137 回答