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
Here is the code
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
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.
来源:https://stackoverflow.com/questions/27563401/using-usagestats-gettotaltimeinforeground-to-get-the-time-every-application-in