使用usageStats.getTotalTimeInForeground()获取设备中每个应用程序花费在前台的时间 [英] Using usageStats.getTotalTimeInForeground() to get the time every application in a device spent in foreground

查看:544
本文介绍了使用usageStats.getTotalTimeInForeground()获取设备中每个应用程序花费在前台的时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道在android设备上运行的所有应用程序所花费的时间.我将使用以下代码获取所有程序包名称.请指导我如何链接程序包和上述方法,以节省应用程序的时间

I want to know the time spent by all applications running in an android device . I am getting all packages names using the following code .Please guide me how to link packages and the above method to get time spent by applications

这是代码

List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    for (PackageInfo pack : packs) {
        if (pack.firstInstallTime != pack.lastUpdateTime) {
            Log.i("n-names",
                    pack.applicationInfo.loadLabel(getPackageManager())
                            .toString());
            Log.i("n-install time", pack.firstInstallTime + "");
            Log.i("n-uptime", pack.lastUpdateTime + "");
            UsageStats usage = null;
            usage.getTotalTimeInForeground();
        }
    }

请告诉我如何对单个软件包使用以上方法

Please tell me how to use the above methods for indivudual packages

推荐答案

如果要获取android lollipop中所有应用程序的前台运行时间,请使用以下代码.

If you want to get the foreground running time of all applications in android lollipop use the following piece of code.

//具有虚拟值和对象的变量.

//Variables with dummy values and objects.

UsageStats usageStats;

String PackageName = "Nothing" ;

long TimeInforground = 500 ;

int minutes=500,seconds=500,hours=500 ;
UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats");     

long time = System.currentTimeMillis(); 

List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); 

 if(stats != null) 
  {
            SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>();
            for (UsageStats usageStats : stats) 
               {

                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.i("BAC", "PackageName is"+PackageName +"Time is: "+hours+"h"+":"+minutes+"m"+seconds+"s");

            }   

请确保您对清单文件拥有所有权限,并且应用程序可以在安全设置下使用该应用程序.

Make sure you have all right permissions in manifest file and app have access with usage under security in settings.

这篇关于使用usageStats.getTotalTimeInForeground()获取设备中每个应用程序花费在前台的时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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