如何在android中获取实时应用程序使用情况统计数据

问题描述 投票:0回答:1

下面的代码每秒跟踪今天应用程序的使用情况,以获得准确的使用时间。问题是它每秒记录相同的使用时间,即打开应用程序时的使用时间。在用户重新打开应用程序之前,使用时间不会改变。当我使用该应用程序时,使用时间应该会增加,但事实并非如此,我如何才能获得该应用程序的实时使用时间。

        long currentTime = System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        long startMillis = calendar.getTimeInMillis();

        UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
        List<UsageStats> usageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startMillis, currentTime);
        Log.d("MainActivity", Arrays.toString(usageStats.toArray()));

        Handler handler = new Handler(getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                for(UsageStats stat : usageStats){
                    if(stat.getPackageName().equals(getPackageName())){
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                            Log.d("MainActivity", "Usage time: " + stat.getTotalTimeVisible());
                        }
                    }
                }
                handler.postDelayed(this, 1000);
            }
        });

这是使用应用程序时的日志(如果应用程序在后台运行,则不会更改):

2024-02-25 17:30:22.840 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:23.851 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:24.864 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:25.874 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:26.885 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:27.894 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:28.906 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
2024-02-25 17:30:29.916 13942-13942 MainActivity            com.prototype1                       D  Usage time: 1435719
java android android-studio usage-statistics usagestatsmanager
1个回答
0
投票

即使您每秒轮询

getTotalTimeVisible
,您通过
queryUsageStats
beginTime
参数提供给
endTime
方法的时间间隔始终相同(并且指的是过去)。

因此,

getTotalTimeVisible
方法调用将始终返回相同的值。

© www.soinside.com 2019 - 2024. All rights reserved.