2012-05-25 17 views
20

pregunto si es posible cambiar el tiempo de espera de la pantalla utilizando el código de Android¿Cómo cambiar el tiempo de espera de la pantalla programáticamente?

enter image description here

+0

Comprobar este enlace [http://stackoverflow.com/questions/1114270/android-screen-timeout][1] [1]: http://stackoverflow.com/ preguntas/1114270/android-screen-timeout –

+0

Posible duplicado de [android-screen-timeout] (http://stackoverflow.com/questions/1114270/android-screen-timeout) –

Respuesta

41

Es fácil de hacer .. Usted debe aprender a resolver su problema a partir del código fuente de 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

si alguien no está trabajando puede necesitar los permisos < uses-permission android: name = "android.permission.WRITE_SETTINGS" /> – Javier

+1

Esto no tiene ningún efecto en la pantalla de bloqueo de 4.4+ dispositivos. ¿Alguien tiene una solución? – Flyview

+0

¿Restaurará esto el valor anterior cuando mi actividad se salga o muera? – Michael

5

Si alguien tiene que configurarlo para que nunca más, aquí está el código

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

@kakoppa He intentado establecer el tiempo de espera para nunca más de la misma manera, pero no funciona :( – user3207655

+0

el valor de '-1' ya no es compatible con Android 25+ (nougat) – Benny

9

Una mejor solución es hacer uno de los siguientes (dependiendo de si se quiere que sea dinámica o estática) :

  1. Especificar atributo android:keepScreenOn en la disposición (XML) (es decir, evitar indefinidamente espera de la pantalla en todo momento),
  2. Añadir albandera al crear su actividad, o
  3. Utilice un WakeLock para controlar el tiempo que la pantalla debe estar hacia arriba (dinámico)

Salida this blog post para ejemplos más detallados de estos dos enfoques.

+0

El enlace ya no funciona. – RShields

3

Configurar el tiempo de espera de la pantalla en -1 no parece hacer un trabajo preciso de lo que se requiere.

He encontrado que establecer el valor en Integer.MAX_VALUE funciona mejor.

Por ejemplo:

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

Esto parece establecer el máximo tiempo de espera al máximo permitido por el dispositivo.

Por ejemplo, si al navegar a la configuración de pantalla en su teléfono solo le permite tener un tiempo de espera de pantalla máximo de 30 minutos, el código anterior configurará el tiempo de espera de la pantalla en 30 minutos.

+0

El último parámetro toma una cadena, no un int, debe ser String.valueOf (Integer.MAX_VALUE) – keag

Cuestiones relacionadas