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:
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.
¿Eso evita que el dispositivo entre en suspensión? Si es así, ¡lo común de WAKE_LOCK me parece un error impactante!
Michael Cramer
32
Sí, mantiene la pantalla encendida y evita que el dispositivo entre en suspensión.
hackbod
1
Sí, puede eliminar la bandera con la API de ventana adecuada. No necesita preocuparse por hacer que se dibuje algo, el marco lo hace si es necesario.
hackbod
1
@hakbod: esto funcionaría para mantener viva la pantalla, pero ¿qué pasa con la pantalla que está dormida, la despertaría y la mantendría viva?
Kavitha
5
@ KC202 puede usar WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON para hacer que la pantalla se encienda cuando se muestre su ventana. También se usa a menudo con FLAG_DISMISS_KEYGUARD y / o FLAG_SHOW_WHEN_LOCKED.
hackbod
34
¡Esta pregunta ya tiene una gran respuesta de @hackbod!
¡Estoy respondiendo a esta pregunta con dos soluciones adicionales!
1.implementation usandosetKeepScreenOn() in java code
@Overrideprotectedvoid 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);}
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á!
nota v.setKeepScreenOn(true);parece ser la única forma de hacerlo para un fragmento de diálogo de pantalla completa
Tim
16
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.
Respuestas:
POR FAVOR NO USE UN BLOQUEO DE DESPERTAR
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 deonCreate()
esta manera: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.
fuente
¡Esta pregunta ya tiene una gran respuesta de @hackbod!
¡Estoy respondiendo a esta pregunta con dos soluciones adicionales!
Solución existente:
Soluciones adicionales:
nosotros podemos usar
keepScreenOn
1.
implementation
usandosetKeepScreenOn() in java code
Documentos http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Añadiendo
keepScreenOn
axml layout
Documentos http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Nota (algunos puntos útiles):
1. No importa que
keepScreenOn
se deba usar enMain/Root/Parent View
él, se puede usar con cualquierchild view
funcionará Al igual que funciona enParent view
2. Lo único que importa es que
View's Visibility must be visible
, de lo contrario, ¡no funcionará!fuente
v.setKeepScreenOn(true);
parece ser la única forma de hacerlo para un fragmento de diálogo de pantalla completaOtra 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.
fuente