Android - Inactividad / Actividad independientemente de la aplicación superior
Necesito saber cuándo fue la última interacción del usuario, independientemente de la aplicación que se encuentre en la parte superior. No me importa dónde ni cuál fue el evento, solo necesito saber cuándo fue. O alternativamente, si sucede, recibo un evento.
He intentado varias cosas:
Crea un servicio con una ventana y agrega un detector de sonido. Esto se comió el evento de toque y no lo pasó.Busqué un comando de shell.getevent
funciona (la nueva línea llega cada vez que se recibe un toque), sin embargo, necesita root y, por lo tanto, no es una solución adecuada para mí.Busqué el "tiempo hasta la cerradura" pero no se me ocurrió nada.También tenga en cuenta: no hay ninguna preocupación de seguridad con esto, ya que no necesito ninguna información de identificación, como la ubicación táctil. Sólo un tipo de sello (o evento en vivo).
Estoy abierto a usar la reflexión para resolverlo también.
@ user2558882 tiene una muy buena solución. A partir de ahora, ese es el mejor enfoque que he encontrado.
Si bien eso es genial, aún requiere que el usuario habilite manualmente nuestra aplicación en los controles de accesibilidad. Tenemos clientes con miles de dispositivos y tenemos una manera de actualizar y cambiar la configuración automáticamente. Intentamos mantener la configuración manual al mínimo, pero algunas cosas aún requieren la intervención del usuario, como habilitar el modo de administrador de dispositivo. Por lo tanto, esta solución es aceptable, sin embargo, todavía estoy abierto a una forma que no requiera ninguna entrada del usuario para habilitarla.
Terminé implementando la idea de @ user2558882 para usar un servicio de accesibilidad. Aunque otras ideas son bienvenidas.