public class SystemInfoUtils {
//获取所有的进程
public static List<processinfo> getrunningprocessinfo(Context context) {
List<processinfo> list = new ArrayList<>();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
PackageManager pm = context.getPackageManager();
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : runningAppProcesses) {
processinfo processinfo = new processinfo();
String processName = info.processName;
int i = am.getProcessMemoryInfo(new int[]{info.pid})[0].getTotalPrivateDirty() * 1024;
processinfo.setMemsize(i);
try {
PackageInfo packageInfo = pm.getPackageInfo(processName, 0);
String appname = packageInfo.applicationInfo.loadLabel(pm).toString();
Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
String packageName = packageInfo.packageName;
processinfo.setPackname(packageName);
processinfo.setAppname(appname);
processinfo.setIcon(icon);
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
//系统进程
processinfo.setUsertask(false);
} else {
//用户进程
processinfo.setUsertask(true);
}
} catch (PackageManager.NameNotFoundException e) {
processinfo.setAppname("进程");
processinfo.setIcon(context.getResources().getDrawable(R.mipmap.save));
e.printStackTrace();
}
list.add(processinfo);
}
return list;
}
//获取正在运行的进程数量
public static int getrunningtask(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
return runningAppProcesses.size();
}
//获取内存信息
public static long getAvailram(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.MemoryInfo outinfo = new ActivityManager.MemoryInfo();
am.getMemoryInfo(outinfo);
return outinfo.availMem;
}
public static long getTotalram(Context context) {
// 第一种 这种低版本获取不到
// ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
// ActivityManager.MemoryInfo outinfo = new ActivityManager.MemoryInfo();
// am.getMemoryInfo(outinfo);
// return outinfo.totalMem;
// 第二种
try {
File file = new File("/proc/meminfo");
FileInputStream stream = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String line = br.readLine();
StringBuffer sb = new StringBuffer();
for (char c : line.toCharArray()) {
if (c >= '0' && c <= '9') {
sb.append(c);
}
}
return Long.parseLong(sb.toString()) * 1024;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}