0

我正在尝试使用UsageStatsManager类的queryUsageStats方法来仅检索设备上每个包在当天(00:00:00 到 23:59:59)的使用情况统计信息。有问题的代码如下:

long startOfToday = TimeUtility.getStartOfToday();
long endOfToday = TimeUtility.getEndOfToday();
List<UsageStats> usageStats = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startOfToday, endOfToday);

检索一天的开始和结束的方法:

    public static long getStartOfToday()
    {
        Calendar cStartOfDay = Calendar.getInstance();
        cStartOfDay.set(Calendar.HOUR_OF_DAY, 0);
        cStartOfDay.set(Calendar.MINUTE, 0);
        cStartOfDay.set(Calendar.SECOND, 0);
        cStartOfDay.set(Calendar.MILLISECOND, 0);
        return cStartOfDay.getTimeInMillis();
    }

    public static long getEndOfToday()
    {
        Calendar cEndOfDay = Calendar.getInstance();
        cEndOfDay.set(Calendar.HOUR_OF_DAY, 23);
        cEndOfDay.set(Calendar.MINUTE, 59);
        cEndOfDay.set(Calendar.SECOND, 59);
        cEndOfDay.set(Calendar.MILLISECOND, 999);
        return cEndOfDay.getTimeInMillis();
    }

根据我对文档的理解,我已经为我想要实现的目标传递了适当的参数。

然而,奇怪的是,在检查调试期间返回到列表中的 UsageStats 对象时,许多对象都有一个 mBeginTimeStamp 值(表示 UsageStats 对象表示的时间范围的开始的长值,以自纪元以​​来的毫秒数为单位)表示一个时间从前一天开始。例如,在今天 12 月 13 日上午 11 点进行测试时,列表中一个包的 mBeginTimeStamp 值指向 12 月 12 日下午 1 点。

就我而言,这些值代表我当地时区的时间,而不是 UTC 时间。

4

0 回答 0