取手机系统参数

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



 /*
 *         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();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

material_无机化学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值