Android: UsageStatsManager não retornando resultados diários corretos
Estou tentando consultarUsageStats
deUsageStatsManager
, com o objetivo de retornar todos os pacotes de aplicativos usados diariamente e por quanto tempo.
O código:
public static List<UsageStats> getUsageStatsList(Context context){
UsageStatsManager usm = getUsageStatsManager(context);
Calendar calendar = Calendar.getInstance();
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.DAY_OF_YEAR, -1);
long startTime = calendar.getTimeInMillis();
List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime, endTime);
return usageStatsList;
}
Eu tenho um alarme que dispara diariamente pouco antes da meia-noite e usa os status de consulta e, em seguida, armazena os dados retornados. No começo, tudo parecia estar funcionando bem e eu estava obtendo resultados do pacote e seu tempo ativo, no entanto, adicionei uma função que verificaria os resultados a cada hora e foi aqui que fiz uma descoberta estranha.
Os resultados deUsageStatsManager
parecia estar sendo redefinido em horários diferentes, em vez de à meia-noite, o que eu esperava, considerando que estava usandoINTERVAL_DAILY
como um parâmetro de pesquisa.
A partir dos dados que salvei, os resultados do 'time' do pacote parecem estar sendo redefinidos em (Tempos difíceis):
3 horas da manhãMeio-dia15:00Meia-noitePercebo que existe uma correlação entre quando os tempos do pacote são redefinidos, mas isso deve acontecer?
Já vi o seguinte tópico e é daí que recebo muitas informações:Como usar o UsageStatsManager?
Consequentemente:Android UsageStatsManager produzindo saída errada? Nos comentários menciona que os dados retornados dequeryUsageStats
não pode ser confiável e resultados aleatórios estão sendo retornados.
Estou perdendo algo simples ou éUsageStatsManager
não está funcionando corretamente?