概述
现在论坛里越来越多垃圾了,两个小功能都要30分,还是代码搬运工,以前一些大神辛苦封装的都免费,这种垃圾搬运几行代码都要收30分。现在代码我贴出来,大家自己看。
下面看不懂的,这有demo链接
/**
* 获取内存可用空间
* @return
*/
public static String getAvailMemory() {// 获取android当前可用内存大小
ActivityManager am = (ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
am.getMemoryInfo(mi);
//mi.availMem; 当前系统的可用内存
return Formatter.formatFileSize(MyApplication.getInstance(), mi.availMem);// 将获取的内存大小规格化
}
/**
* 获取内存总共空间
* @return
*/
public static String getTotalMemory() {
String str1 = "/proc/meminfo";// 系统内存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
arrayOfString = str2.split("\s+");
for (String num : arrayOfString) {
Log.e(str2, num + "t");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
localBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return Formatter.formatFileSize(MyApplication.getInstance(), initial_memory);// Byte转换为KB或者MB,内存大小规格化
}
/**
* 获取cpu使用率
* @return
*/
public static float getCpuUsed() {
try {
RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
String load = reader.readLine();
String[] toks = load.split(" ");
long idle1 = Long.parseLong(toks[5]);
long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
try {
Thread.sleep(360);
} catch (Exception e) {
e.printStackTrace();
}
reader.seek(0);
load = reader.readLine();
reader.close();
toks = load.split(" ");
long idle2 = Long.parseLong(toks[5]);
long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
return (float) (cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));
} catch (IOException ex) {
ex.printStackTrace();
}
return 0;
}
/**
* 外部存储是否可用 (存在且具有读写权限)
*/
public static boolean isExternalStorageAvailable() {
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
}
/**
* 获取手机内部可用空间大小
* @return
*/
static public String getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize);
}
/**
* 获取手机内部空间大小
* @return
*/
public static String getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();//Gets the Android data directory
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize(); //每个block 占字节数
long totalBlocks = stat.getBlockCount(); //block总数
return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize);
}
/**
* 获取手机外部可用空间大小
* @return
*/
public static String getAvailableExternalMemorySize() {
if (isExternalStorageAvailable()) {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize);
} else {
return "-1";
}
}
/**
* 获取手机外部总空间大小
* @return
*/
public static String getTotalExternalMemorySize() {
if (isExternalStorageAvailable()) {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize);
} else {
return "-1";
}
}
最后
以上就是追寻毛豆为你收集整理的Android获取CPU,内存,磁盘使用率的全部内容,希望文章能够帮你解决Android获取CPU,内存,磁盘使用率所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复