使用UsageStatsManager检索应用程序从上午12点到当前时间所花费的前景时间

时间:2017-12-02 18:53:39

标签: android usagestatsmanager

我想找出从上午12点到当前时间的某个应用的前景时间。这是我到目前为止所尝试的

    String PackageName = "Nothing";
    long TimeInforground = 500;
    UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService("usagestats");

    long time = System.currentTimeMillis();

    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);

    List<UsageStats> stats = mUsageStatsManager.queryUsageStats( UsageStatsManager.INTERVAL_BEST,
                                                                 c.getTimeInMillis(),
                                                                 time );
    if ( stats != null )
    {
        for ( UsageStats usageStats : stats )
        {
            if ( usageStats.getPackageName().contains("example.app") )
            {
                TimeInforground = usageStats.getTotalTimeInForeground();

                PackageName = usageStats.getPackageName();

                minutes = (int) ((TimeInforground / (1000 * 60)) % 60);

                seconds = (int) (TimeInforground / 1000) % 60;

                hours = (int) ((TimeInforground / (1000 * 60 * 60)) % 24);

                Log.e("BAC", "PackageName is" + PackageName + "Time is: " + hours + "h" + ":" + minutes + "m" + seconds + "s");

                break;
            }
        }
    }
}

当时间早于上午12点并且example.app未打开时,我预计前景时间为0。但事实似乎并非如此。它往往不会在上午12点重置,但很晚以后。

我没有找到关于UsageStatsManager的太多文档,上面的代码是对StackOverflow上的其他答案的略微修改,以满足我的需求。

我也试过了UsageStatsManager.INTERVAL_DAILY,但即便如此,似乎并没有完全符合我的目的。

任何帮助都会得到很多赞赏。

0 个答案:

没有答案