2012-05-25 61 views
20

只是想知道是否有可能改变使用代码屏幕超时Android中如何以编程方式更改屏幕超时?

enter image description here

+0

检查此链接 [http://stackoverflow.com/questions/1114270/android-screen-timeout][1] [1]:http://stackoverflow.com/问题/ 1114270/android-screen-timeout –

+0

[android-screen-timeout]可能的重复(http://stackoverflow.com/questions/1114270/android-screen-timeout) –

回答

41

这是简单的事情。你应该学会从解决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); 
} 
+6

如果有人不工作,你可能需要权限<使用权限android:name =“android.permission.WRITE_SETTINGS”/> – Javier

+1

这对4.4+设备的锁屏没有影响。任何人都有解决方案? – Flyview

+0

当我的活动退出或被杀后,这会恢复以前的值吗? – Michael

5

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

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

@kakoppa我试图设置超时以绝不相同的方式,但不工作:( – user3207655

+0

“-1”的值不再支持Android 25+(牛轧糖) – Benny

9

更好的解决方案是做下列之一(取决于您是否希望它是动态或静态) :

  1. 指定布局(XML)属性android:keepScreenOn(即无限期地防止屏幕超时在任何时候),
  2. 添加WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON当您创建活动标志,或
  3. 使用WakeLock来控制屏幕应该有多长了(动态)这两种方法的更详细的例子

退房this blog post

+0

链接不再有效。 – RShields

3

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

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

例如:

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

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

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

+0

最后一个参数需要一个字符串,而不是一个int,应该是 String.valueOf(Integer.MAX_VALUE) – keag