取手机系统参数

    xiaoxiao2022-07-05  183

    分享一个自用的取手机系统参数的工具类

    /* * 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(); } }
    最新回复(0)