Cómo evitar que se apague la pantalla mientras se ejecuta mi App | WinRT
Básico
WinRT es un sistema concebido para funcionar muy bien en dispositivos móviles, por ello el consumo de batería es un aspecto importante en todo el sistema y una de las funcionalidades para disminuir el consumo de energía consiste en que disminuir la intensidad de luz de la pantalla tras un periodo de inactividad que de mantenerse por más tiempo conllevaría a que se apague la pantalla y al reactivarla estaría visible el lock screen.
Es un efecto deseable desde todo punto de vista, la duración de la batería es fundamental para una adecuada experiencia de usuario.
Sin embargo en ocasiones no es conveniente que esto suceda, que pasa cuando mi aplicación muestra contenido en video? sería deseable que esto sucediera? desde luego que no, pero no es la única situación que ameritaría evitar el cambio en la intensidad de pantalla y subsecuente lock screen, estas son algunas de las situaciones donde no es conveniente este comportamiento:
- Apps para ver películas o videos
- Apps que utilicen visualización de coordenadas por GPS
- Videojuegos donde el jugador pueda dejar establecida una tarea que puede trabajar desatendida por el usuario por un tiempo (ejemplo Plantas vs Zombies)
- Algunos Temporizadores , cronómetros
- En ocasiones, las App para lectura
Cómo evitar el lock screen?
En WinRT existe una clase llamada DisplayRequest , esta nos permite crear un objeto que puede solicitar mantener activa la pantalla. Es muy fácil de usar:
var dispRequest = new DisplayRequest();
dispRequest.RequestActive();
Para desactivar la funcionalidad debes hacer un llamado a RequestRelease()
de la siguiente forma:
dispRequest.RequestRelease();
Con esto nuestra App ya solicita al sistema que no apague el display, pero hay que tener en cuenta los siguientes puntos para su uso
- Los request son acumulativos, es decir si llamas a
RequestActive()
más de una vez entonces por cada vez que lo llames luego debes llamar aRequestRelease()
. - Un ejemplo si tu App muestra videos debe llamar a RequestActive cuando comience a mostrarlos, y una vez deje de hacerlo debe llamar a
RequestRelese()
. - Debes preveer cierres inesperados de la App de tal forma que si esta es cerrada antes de acabar el video de todas formas llame a
RequestRelease()
- Si tu App pasa a segundo plano WinRT Automáticamente desactivará los llamados a
RequestActive()
que hayas realizado pero volverá a activarlos cuando la aplicación vuelva a estar en primer plano.
Finalmente no utioices esta característica si tu app realmente no lo requiere, porque inclusive puede que no pase el proceso de publicación en el store.