使用usageStats.getTotalTimeInForeground()获取设备中每个应用程序花费在前台的时间 [英] Using usageStats.getTotalTimeInForeground() to get the time every application in a device spent in foreground
问题描述
我想知道在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屋!