如何以编程方式更改屏幕超时?

时间:2012-05-25 05:21:30

标签: android

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

enter image description here

5 个答案:

答案 0 :(得分:48)

这很简单。你应该学会从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);
}

答案 1 :(得分:9)

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

  1. 在布局(xml)中指定属性android:keepScreenOn(即无限期地阻止屏幕超时),
  2. 创建活动时添加WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON标记,或
  3. 使用WakeLock来控制屏幕的显示时间(动态)
  4. 查看this blog post了解这两种方法的更多详细示例。

答案 2 :(得分:5)

如果有人需要将其设置为never,则代码为

Settings.System.putString(cr, Settings.System.SCREEN_OFF_TIMEOUT, "-1");

答案 3 :(得分:5)

将屏幕超时设置为-1似乎无法准确地完成所需工作。

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

例如:

  

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

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

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

答案 4 :(得分:-1)

尝试一下。只需将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();
}