Using usageStats.getTotalTimeInForeground() to get the time every application in a device spent in foreground

前端 未结 1 1578
醉酒成梦
醉酒成梦 2021-01-03 05:59

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 packag

相关标签:
1条回答
  • 2021-01-03 06:19

    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.

    0 讨论(0)
提交回复
热议问题