2012-05-25 64 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