分享一个自用的取手机系统参数的工具类
/*
* MemTotal: 所有可用RAM大小。
* MemFree: LowFree与HighFree的总和,被系统留着未使用的内存。
* Buffers: 用来给文件做缓冲大小。
* Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于diskcache minus SwapCache)。
* SwapCached:被高速缓冲存储器(cache memory)用的交换空间的大小。已经被交换出来的内存,仍然被存放在swapfile中,用来在需要的时候很快的被替换而不需要再次打开I/O端口。
* Active: 在活跃使用中的缓冲或高速缓冲存储器页面文件的大小,除非非常必要,否则不会被移作他用。
* Inactive: 在不经常使用中的缓冲或高速缓冲存储器页面文件的大小,可能被用于其他途径。
* SwapTotal: 交换空间的总大小。
* SwapFree: 未被使用交换空间的大小。
* Dirty: 等待被写回到磁盘的内存大小。
* Writeback: 正在被写回到磁盘的内存大小。
* AnonPages:未映射页的内存大小。
* Mapped: 设备和文件等映射的大小。
* Slab: 内核数据结构缓存的大小,可以减少申请和释放内存带来的消耗。
* SReclaimable:可收回Slab的大小。
* SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)。
* PageTables:管理内存分页页面的索引表的大小。
* NFS_Unstable:不稳定页表的大小。
* 要获取android手机总内存大小,只需读取”/proc/meminfo”文件的第1行,并进行简单的字符串处理即可。*/
public class Tools {
public static final String TAG = Tools.class.getName();
private static final String MEM_INFO_PATH = "/proc/meminfo";
public static final String MEMTOTAL = "MemTotal";
public static final String MEMFREE = "MemFree";
/**
* 获得SD卡总大小
*
* @return
*/
public static String getSDTotalSize(Context context) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return Formatter.formatFileSize(context, blockSize * totalBlocks);
}
/**
* 获得sd卡剩余容量,即可用大小
*
* @return
*/
public static String getSDAvailableSize(Context context) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return Formatter.formatFileSize(context, blockSize * availableBlocks);
}
/**
* 获得机身内存总大小,没有单位
*
* @return
*/
public static String getRomTotalSize(Context context) {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
String rom = Formatter.formatFileSize(context, blockSize * totalBlocks);
String romnew = AppUtils.splitString(rom);
if (romnew == null) {
return rom;
}
return romnew;
}
/**
* 获得机身内存总大小,没有单位
*
* @return
*/
public static String getRomT(Context context, String romTotalSize) {
String rom = null;
try {
rom = romTotalSize.replaceAll(" ", "K");
rom = AppUtils.splitStringGB(rom);
} catch (Exception e) {
getRomTotalSize(context);
}
if (rom == null) {
getRomTotalSize(context);
}
return rom;
}
public static String getNumber(String str) {
if (str.indexOf(".") > 0) {
str = str.substring(0, str.indexOf("."));
}
String regEx = "[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
MLog.e("Number:", m.replaceAll("").trim());
return m.replaceAll("").trim();
}
/**
* 获得机身内存总大小,GB
*
* @return
*/
public static String getRomTotal(Context context) {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
String rom = Formatter.formatFileSize(context, blockSize * totalBlocks);
return rom;
}
//内存(rom)
public static long[] getRomMemroy() {
long[] romInfo = new long[2];
//Total rom memory
romInfo[0] = getTotalInternalMemorySize();
//Available rom memory
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
romInfo[1] = blockSize * availableBlocks;
getVersion();
return romInfo;
}
public static String[] getVersion() {
String[] version = {"null", "null", "null", "null"};
String str1 = "/proc/version";
String str2;
String[] arrayOfString;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
version[0] = arrayOfString[2];//KernelVersion
localBufferedReader.close();
} catch (IOException e) {
}
version[1] = Build.VERSION.RELEASE;// firmware version
version[2] = Build.MODEL;//model
version[3] = Build.DISPLAY;//system version
return version;
}
public static long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
/**
* 获取指定字段信息
*
* @return
*/
public static String getDeviceInfo() {
StringBuffer sb = new StringBuffer();
sb.append("主板:" + Build.BOARD);
sb.append("\n系统启动程序版本号:" + Build.BOOTLOADER);
sb.append("\n系统定制商:" + Build.BRAND);
sb.append("\ncpu指令集:" + Build.CPU_ABI);
sb.append("\ncpu指令集2:" + Build.CPU_ABI2);
sb.append("\n设置参数:" + Build.DEVICE);
sb.append("\n显示屏参数:" + Build.DISPLAY);
sb.append("\n无线电固件版本:" + Build.getRadioVersion());
sb.append("\n硬件识别码:" + Build.FINGERPRINT);
sb.append("\n硬件名称:" + Build.HARDWARE);
sb.append("\nHOST:" + Build.HOST);
sb.append("\n修订版本列表:" + Build.ID);
sb.append("\n硬件制造商:" + Build.MANUFACTURER);
sb.append("\n版本:" + Build.MODEL);
sb.append("\n硬件序列号:" + Build.SERIAL);
sb.append("\n手机制造商:" + Build.PRODUCT);
sb.append("\n描述Build的标签:" + Build.TAGS);
sb.append("\nTIME:" + Build.TIME);
sb.append("\nbuilder类型:" + Build.TYPE);
sb.append("\nUSER:" + Build.USER);
return sb.toString();
}
/**
* 通过反射获取所有的字段信息
*
* @return
*/
public String getDeviceInfo2() {
StringBuilder sbBuilder = new StringBuilder();
Field[] fields = Build.class.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
sbBuilder.append("\n" + field.getName() + ":" + field.get(null).toString());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return sbBuilder.toString();
}
}