Respuestas:
Esto requiere que le des a tu aplicación un permiso adicional, y es muy fácil introducir errores en los que accidentalmente permaneces presionando el bloqueo de activación y así dejas la pantalla encendida.
Es mucho, mucho mejor usar la bandera de la ventana FLAG_KEEP_SCREEN_ON, que puede habilitar en la ventana de su actividad de onCreate()esta manera:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Esto asegurará que la pantalla permanezca encendida mientras su ventana está en primer plano, y solo mientras está en primer plano. Simplifica enormemente este caso de uso común, eliminando cualquier malabarismo que deba hacer mientras su aplicación cambia de estado.
¡Esta pregunta ya tiene una gran respuesta de @hackbod!
¡Estoy respondiendo a esta pregunta con dos soluciones adicionales!
Solución existente:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Soluciones adicionales:
nosotros podemos usar keepScreenOn
1. implementation usandosetKeepScreenOn() in java code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// or any View (in case generated programmatically )
View v = getLayoutInflater().inflate(R.layout.driver_home, null);
v.setKeepScreenOn(true);
setContentView(v);
}
Documentos http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Añadiendo keepScreenOnaxml layout
<?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" >
Documentos http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Nota (algunos puntos útiles):
1. No importa que keepScreenOnse deba usar en Main/Root/Parent View él, se puede usar con cualquier child viewfuncionará Al igual que funciona enParent view
2. Lo único que importa es que View's Visibility must be visible, de lo contrario, ¡no funcionará!
v.setKeepScreenOn(true);parece ser la única forma de hacerlo para un fragmento de diálogo de pantalla completa
Otra solución es agregar android:keepScreenOn="true"( documentación ) a las vistas que necesitan mantener la pantalla encendida.
Permite un control un poco más granular en términos de qué vistas permanecen y cuáles no. Incluso puede hacer referencia a una configuración de un archivo de recursos de esta manera.