编程语言
首页 > 编程语言> > android – 使用usageStats.getTotalTimeInForeground()来获取设备中每个应用程序在前台使用的时间

android – 使用usageStats.getTotalTimeInForeground()来获取设备中每个应用程序在前台使用的时间

作者:互联网

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

这是代码

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();
        }
    }

请告诉我如何使用上述方法进行个人包装

解决方法:

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

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

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");

            }   

确保您在清单文件中拥有所有权限,并且应用程序可以访问设置中的安全性下的使用情况.

标签:android,package,usage-statistics
来源: https://codeday.me/bug/20190830/1766778.html