Red de conocimiento informático - Computadora portátil - Cómo mantener la pantalla siempre encendida en Android

Cómo mantener la pantalla siempre encendida en Android

I. Introducción

En el proceso de desarrollo real, habrá algunas situaciones en las que será necesario mantener la pantalla encendida para evitar entrar en el estado de pantalla de bloqueo. Lo más común es que durante la reproducción de video, si la pantalla se atenúa repentinamente o la pantalla se bloquea directamente, afectará en gran medida la experiencia del usuario.

Esta publicación es un registro simple y un resumen de cómo mantener la pantalla constante en Android.

2. Varios métodos comunes

1. WakeLock

Usar WakeLock es un método relativamente convencional en los libros de texto y es muy sencillo de usar.

Como puede ver, WakeLock se obtiene principalmente a través de PowerManager, y luego el recurso WakeLock se obtiene a través del método adquirir (). WakeLock también es un recurso después de su uso, no olvide llamar a la versión. () método para liberarlo.

El uso de WakeLock también requiere una declaración adicional del permiso WAKE_LOCK.

Por supuesto, no debería haber ningún problema al utilizar WakeLock por ahora. Pero, de hecho, todos los indicadores de WakeLock relacionados con el brillo de la pantalla se han marcado como obsoletos en el nivel API 17+. Como puede ver, Android hace muchos esfuerzos para ahorrar energía y, dado que la pantalla consume mucha energía, no recomendamos usarla normalmente ya que ha quedado obsoleta.

Para obtener más información sobre PowerManager.WakeLock, consulte el artículo anterior: PowerManager es más que solo WakeLock.

2.FLAG_KEEP_SCREEN_ON

Como se mencionó anteriormente, WakeLock se ha marcado como obsoleto. Aunque ha quedado obsoleto, Android en realidad nos brinda una solución para marcar la pantalla como siempre usando FLAG_KEEP_SCREEN_ON.

El uso de FLAG_KEEP_SCREEN_ON es muy simple. Es una bandera en la ventana de la página y se puede agregar usando el método addFlags().

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

Por supuesto, debes cancelar después de terminar de usarlo. Para borrar esta bandera, utilice el método clearFlags().

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

Normalmente, llamaremos a estos dos métodos en los métodos onResume() y onPause() de la actividad.

Consulte la documentación de FLAG_KEEP_SCREEN_ON.

Como puedes ver aquí, solo funciona para la ventana que se muestra y mantiene la pantalla del dispositivo resaltada en todo momento.

De hecho, puedes ver que parte de la razón por la que se recomienda oficialmente FLAG_KEEP_SCREEN_ON en lugar de WakeLock es que WakeLock es un recurso global, mientras que FLAG_KEEP_SCREEN_ON es solo un recurso relacionado con ventanas con un alcance mucho más pequeño. En comparación con WakeLock, FLAG_KEEP_SCREEN_ON es mejor porque no requiere solicitudes de permisos adicionales, lo que generalmente se recomienda.

3. keepScreenOn

Además de agregar el indicador FLAG_KEEP_SCREEN_ON a la ventana, también puede llamar al método keepScreenOn() en la Vista actualmente visible para configurar la pantalla para que esté siempre encendida. .

keepScreenOn() es un método en el objeto Ver, que también proporciona el atributo de diseño android:keepScreenOn para configurar en el diseño.

Una cosa a tener en cuenta es que el logotipo siempre activo configurado usando keepScreenOn() requiere que la Vista actual esté visible en la pantalla para que surta efecto. Por lo general, agregamos este atributo al diseño raíz de la página.

Como puede ver en la documentación, esta propiedad en realidad funciona igual que FLAG_KEEP_SCREEN_ON, excepto que es más simple y solo necesita configurarse para una vista específica y entra en vigor cuando la vista es visible y no de otra manera. .

4.setScreenOnWhilePlaying() de MediaPlayer

Si usamos MediaPlayer para la reproducción de vídeo, MediaPlayer también proporciona el método setScreenOnWhilePlaying() para establecer constantes de pantalla.

Esto no dice mucho, pero si continúas mirando el código fuente, verás que lo que termina siendo llamado es en realidad el método keepScreenOn(). Por supuesto, no está de más conocer un método más.

Tercero, resumen

Hay muchas formas de mantener la pantalla encendida, por favor elige según nuestras necesidades. Por supuesto, es mejor no utilizar WakeLock ya que está marcado como obsoleto.