¿Cómo puedo mantener la pantalla encendida en mi aplicación?

Para mi aplicación de Android nunca quiero que el teléfono se bloquee o la luz de fondo se apague

Utilice la clase PowerManager.WakeLock para realizar esto. Vea el siguiente código:

import android.os.PowerManager; public class MyActivity extends Activity { protected PowerManager.WakeLock mWakeLock; /** Called when the activity is first created. */ @Override public void onCreate(final Bundle icicle) { setContentView(R.layout.main); /* This code together with the one in onDestroy() * will make the screen be always on until this Activity gets destroyed. */ final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); } @Override public void onDestroy() { this.mWakeLock.release(); super.onDestroy(); } } 

Utilice el siguiente permiso en el archivo de manifiesto:

 <uses-permission android:name="android.permission.WAKE_LOCK" /> 

Espero que esto solucione tu problema … 🙂

Agregue una línea de código después de setContentView () en onCreate ()

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flag); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

¡Muchas respuestas ya existen aquí! Estoy respondiendo a esta pregunta con soluciones adicionales y confiables:

Usar PowerManager.WakeLock no es una solución tan fiable, ya que la aplicación requiere permisos adicionales.

 <uses-permission android:name="android.permission.WAKE_LOCK" /> 

Además, si permanece accidentalmente reteniendo el bloqueo de la vigilia, puede dejar la pantalla encendida.

Por lo tanto, recomiendo no usar la solución PowerManager.WakeLock . En lugar de esto, utilice cualquiera de las siguientes soluciones:

Primero:

Podemos usar getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); En onCreate()

 @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

Segundo:

Podemos usar keepScreenOn

1. Implementación usando setKeepScreenOn() en código java:

 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically ) v.setKeepScreenOn(true); setContentView(v); } 

Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. Añadir keepScreenOn al diseño xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:keepScreenOn="true" > 

Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

Notas (algunos puntos útiles):

  1. No importa que keepScreenOn se utilice en una vista Main / Root / Parent. Se puede utilizar con cualquier vista secundaria y funcionará de la misma manera que funciona en una vista de padres.
  2. Lo único que importa es que la visibilidad de la vista debe ser visible. ¡Si no, no trabajará!

No utilice Wake Lock.

 It requires permission and other stuff and may cause error if you forget to set it in right time. 

La forma más fácil es usar el código a continuación cuando desee mantener la pantalla encendida.

  getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

Una adición a la respuesta si desea eliminar o finalizar keep_Screen_on

 getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

También puedes ver aquí

Y the best and easiest way .. Uso de android:keepScreenOn="true" en la raíz de diseño de su actividad hace lo mismo sin código extra. Pero lo mantendrá en Keep_Scree_on State ..

Puede variar según su demanda Ver aquí

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

getWindow es un método definido para las actividades, y no requiere que encuentre primero una View .

Echa un vistazo a esta discusión Force Screen On

Hackbod tiene una gran respuesta.

Simplemente puede usar setKeepScreenOn() de la clase View.

Adición de android:keepScreenOn="true" en el XML de la actividad (s) que desea mantener la pantalla encendida es la mejor opción. Agregue esa línea al diseño principal de la (s) actividad (es).

Algo como esto

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true" android:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > ... </LinearLayout> 

Debe utilizar Power Manager para obtener un bloqueo de desbloqueo en su aplicación.

Lo más probable es que esté interesado en un FULL_WAKE_LOCK :

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); wl.acquire(); .... wl.release(); 

En este punto, el método

 final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); 

es obsoleto.

Debe utilizar getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); Y getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 <uses-permission android:name="android.permission.WAKE_LOCK" /> 

Debe tener, si desea configurarlo como

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

No es necesario agregar permiso y hacer trucos. Sólo utilice el texto debajo de su diseño principal.

  android:keepScreenOn="true" 

Prueba Esto podemos hacerlo de múltiples maneras en esos

Solución 1:

  class MainActivity extends AppCompactActivity{ @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } } 

Solución 2:

En el archivo activity_main.xml simplemente agregue

  <android:KeepScreenOn="true"/> 

Mi consejo es por favor no utilice WakeLock si utiliza esto tendrá que definir permiso adicional y sobre todo esta cosa útil en el entorno de desarrollo de cpu.

Y asegúrese de desactivar la pantalla mientras se cierra la actividad

Puedes hacerlo de esta manera

  pubic void onDestry(){ getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.