Android - Inatividade / Atividade, independentemente do aplicativo principal
Preciso descobrir quando a última interação do usuário foi, independentemente de qual aplicativo está no topo. Eu não me importo sobre onde ou qual foi o evento Eu só preciso saber quando foi. Ou, alternativamente, quando acontece, recebo um evento.
Eu tentei várias coisas:
Crie serviço com uma janela e adicione um ouvinte de toque. Isso comeu o evento de toque e não o transmitiuProcurei por um comando shell.getevent
funciona (nova linha vem em cada vez que um toque é recebido), no entanto você precisa de root e por isso não é uma solução adequada para mim.Procurei "time until lock", mas não consegui nada.Observe também: Não há preocupação de segurança com isso, pois não preciso de nenhuma informação de identificação, como localização por toque. Apenas um carimbo de tipo (ou evento ao vivo).
Estou aberto a usar a reflexão para descobrir isso também.
@ user2558882 tem uma solução muito boa. A partir de agora, essa é a melhor abordagem que encontrei.
Embora isso seja ótimo, ainda é necessário que o usuário habilite manualmente nosso aplicativo nos controles de acessibilidade. Temos clientes com milhares de dispositivos e temos uma maneira de atualizar e alterar as configurações automaticamente. Tentamos manter a configuração manual no mínimo, mas algumas coisas ainda exigem a entrada do usuário, como ativar o modo Admin do dispositivo. Portanto, essa solução é aceitável, mas ainda estou aberta a uma maneira que não requer nenhuma entrada do usuário para ativar.
Acabei implementando a idéia do @ user2558882 de usar um serviço de acessibilidade. Embora outras idéias sejam bem vindas.