UsageStatsManager是否仅从前一天/周/月/年返回数据? [英] UsageStatsManager returning data from just last day/week/month/year?
问题描述
我正在尝试从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屋!