¿Cómo detectar cuando la pantalla está encendida?
Como se mencionó en una pregunta anterior, tengo dificultades para interceptar todos los eventos de android.intent.action.SCREEN_ON
sin un servicio de larga duración (desalentado).
Puedo poder trabajar alrededor de la necesidad si puedo simplemente resolverse cuando la pantalla está encendido en cualquier momento dado, en el Service
.
¿Alguien puede sugerir una llamada al método que devuelva esta información? 1,5 hacia arriba.
El sistema deliberadamente no permite que las aplicaciones reciban ACTION_SCREEN_ON
y ACTION_SCREEN_OFF
en su manifiesto, porque no queremos tener que lanzar un montón de aplicaciones para activar o desactivar la pantalla. Esto es algo que sucede todo el tiempo, y debe ser lo más rápido posible.
Lamentablemente, como se ha señalado, no hay una manera de comprobar de inmediato para ver si la pantalla está encendida.
PowerManager.isScreenOn()
Desde: Nivel de API 7
¿Puede el sistema difundir la intención ACTION_USER_PRESENT de alguna ayuda?
Si su código se está ejecutando, hay una muy buena probabilidad de que la pantalla esté encendida. La principal excepción sería si su código es despertado a través de AlarmManager
.
Sería bueno si ACTION_SCREEN_ON
fuera una emisión pegajosa, pero eso no parece ser el caso.
Si puede rodar con Android 2.1 y isScreenOn()
posteriores, PowerManager
ahora tiene un método isScreenOn()
. La buena noticia es que está disponible. La mala noticia es que, puesto que se añadió allí, es poco probable que haya otra forma de determinarla fácilmente. Y, una inspección rápida del código fuente no da mucha esperanza de que podría hackear su camino a la información en SDK anteriores.