2014-12-19 49 views
3

我想知道在Android設備上運行的所有應用程序花費的時間。我使用下面的代碼。請指導我如何鏈接包和上面的方法得到的時間由應用程序使用usageStats.getTotalTimeInForeground()獲取設備中每個應用程序花費在前臺的時間

在這裏度過了讓所有的軟件包名稱是代碼

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

請告訴我如何使用以上方法適用於個性化包裝

回答

2

如果您想獲得android棒棒糖中所有應用程序的前臺運行時間,請使用以下代碼片段。

//帶有虛擬值和對象的變量。

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

      } 

請確保您在清單文件中具有所有權限並且應用程序可以在設置中使用安全性下的訪問權限。

+0

但如何使用下面的(棒棒糖)5.0 device.please告訴我。 – 2016-11-11 09:35:07

相關問題