怎样统计Android手机各个应用的使用时间以及使用次数
思路是这样:
1.新建一个service,里面开启一个TimeTask去计数,可以每半分钟,或者没一秒钟去确认当前运行的app
2.对于api level大于等于24的机器,用如下方法获取当前运行app:
public static String getTopApp(Context context) {
if (Build.VERSION.SDK_INT \u0026gt;= Build.VERSION_CODES.N) {
UsageStatsManager m = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
if (m != null) {
long now = System.currentTimeMillis();
//获取60秒之内的应用数据
List\u0026lt;UsageStats\u0026gt; stats = m.queryUsageStats(UsageStatsManager.INTERVAL_BEST, now - 60 * 1000, now);
【怎样统计Android手机各个应用的使用时间以及使用次数】 // Log.i(TAG, "Running app number in last 60 seconds : " + stats.size());
String topActivity = "";
//取得最近运行的一个app,即当前运行的app
if ((stats != null) \u0026amp;\u0026amp; (!stats.isEmpty())) {
int j = 0;
for (int i = 0; i \u0026lt; stats.size(); i++) {
if (stats.get(i).getLastTimeUsed() \u0026gt; stats.get(j).getLastTimeUsed()) {
j = i;
}
}
topActivity = stats.get(j).getPackageName();
return topActivity;
}
// Log.i(TAG, "top running app is : "+topActivity);
}
}
return null;
}
对于api level大于21小于等于23的机器,使用以下方法:
/** first app user */
public static final int AID_APP = 10000;
/** offset for uid ranges for each user */
public static final int AID_USER = 100000;
public static String getForegroundApp() {
// LogManager.LogEWithTag(TAG,"getForegroundApp******");
File files = new File("/proc").listFiles();
int lowestOomScore = Integer.MAX_VALUE;
String foregroundProcess = null;
// LogManager.LogEWithTag("DDDDD","files size = "+ files.length);
for (File file : files) {
// LogManager.LogEWithTag("DDDDD","files name = "+ file.getName());
if (!file.isDirectory()) {
continue;
}
int pid;
try {
pid = Integer.parseInt(file.getName());
} catch (NumberFormatException e) {
continue;
}
//LogManager.LogEWithTag("DDDDD","pid = "+ pid);
try {
String cgroup = read(String.format("/proc/%d/cgroup", pid));
String lines = cgroup.split("\");
String cpuSubsystem;
String cpuaccctSubsystem;
// LogManager.LogEWithTag("DDDDD","cgroup = "+ cgroup+" lines.length = "+lines.length);
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 创新经营|
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
