UsageStatsManager是否仅从前一天/周/月/年返回数据? [英] UsageStatsManager returning data from just last day/week/month/year?

查看:373
本文介绍了UsageStatsManager是否仅从前一天/周/月/年返回数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从UsageStatsManager查询UsageStats. 我建立了一个DateUtils类,该类为我提供了获取每天/每月/每年(即将到来)的开始和结束时间的方法,如下所示:

I'm trying to query UsageStats from UsageStatsManager. I've build a DateUtils class that provide me with methods to get the start and end time of each day/month/year (week is coming), like this:

public static Calendar getCal(int year, int month, int day) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, 0, 0, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal;
}

public static long getDayStart(int year, int month, int day) {
    return getCal(year, month, day).getTimeInMillis();
}

public static long getDayEnd(int year, int month, int day) {
    Calendar cal = getCal(year, month, day);
    cal.add(Calendar.DATE, 1);
    return cal.getTimeInMillis();
}

我正在使用这些多头查询不同日期的UsageStats:

I'm using these longs to query UsageStats for different days:

 mUsageStats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startTime, endTime);

我可以获取今天的数据,但是前几天会返回一个空列表.

I can get data for today, but previous days will return an empty list.

这是我用来获取数据的方法:

This is what I use to get the data:

12 nov 2014, with type UsageStatsManager.INTERVAL_DAILY
startTime: 1415746800000
endTime: 1415833200000
mUsageStats size: 18

11 nov 2014, with type UsageStatsManager.INTERVAL_DAILY
startTime: 1415660400000
endTime: 1415746800000
mUsageStats size: 0

API中是否有限制以防止我获取较旧的数据,或者我做错了什么?

Is there a limit in the API that prevents me from getting older data or am I doing something wrong?

推荐答案

您可以从任意日期获取使用情况统计信息(在设置的范围内

You can get usage stats from whatever date you want (within the bounds set here) by using queryAndAggregateUsageStats() method with correct milliseconds like this:

UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
if(mUsageStatsManager != null){
    Calendar beginCal = Calendar.getInstance();
    beginCal.add(Calendar.DATE, -1); // get yesterdays data
    Calendar  endCal = Calendar.getInstance();

    Map<String, UsageStats> queryUsageStats = mUsageStatsManager.queryAndAggregateUsageStats(beginCal.getTimeInMillis(), endCal.getTimeInMillis());
}

这篇关于UsageStatsManager是否仅从前一天/周/月/年返回数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆