¿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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.