Android获取系统储存以及内存信息的方法(二)

时间:2022-07-28
本文章向大家介绍Android获取系统储存以及内存信息的方法(二),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Android获取储存信息以及内存信息可以用adb命令查看。

adb查看系统内存信息以及储存信息:

命令:adb shell cat /proc/meminfo

代码:

 private static final String FILENAME_PROC_MEMINFO = "/proc/meminfo";
/**
 * 获取手机内存总大小
 * @return
 */
 public static String getTotalMemorySize() {
    try {
      FileReader fr = new FileReader(FILENAME_PROC_MEMINFO);
      BufferedReader br = new BufferedReader(fr, 2048);
//      String memoryLine = br.readLine();
      String subMemoryLine = "";
      String Line = "";
      while ((Line = br.readLine()) != null)
      {
        if (Line.contains("MemTotal:")){
          subMemoryLine = Line.substring(Line.indexOf("MemTotal:"));
          break;
        }

      }
      br.close();
      Matcher mer = Pattern.compile("^[0-9]+$").matcher(subMemoryLine.replaceAll("D+", ""));
      //如果为正整数就说明数据正确的,确保在Double.parseDouble中不会异常
      if (mer.find()) {
        long memSize = Integer.parseInt(subMemoryLine.replaceAll("D+", "")) ;
        double mem = (Double.parseDouble(memSize + "")/1024)/1024;
        NumberFormat nf = new DecimalFormat( "0.0 ");
        mem = Double.parseDouble(nf.format(mem));
        //Log.e(LOG_TAG,"=========mem================ " + mem);
        return String.valueOf(mem);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return "Unavailable";
  }

  /**
   * 获取手机剩余内存大小
   * @return
   */
  public static String getFreeMemorySize() {
    try {
      FileReader fr = new FileReader(FILENAME_PROC_MEMINFO);
      BufferedReader br = new BufferedReader(fr, 2048);
//      String memoryLine = br.readLine();
      String subMemoryLine = "";
      String Line = "";
      while ((Line = br.readLine()) != null)
      {
        if (Line.contains("MemFree:")){
          subMemoryLine = Line.substring(Line.indexOf("MemFree:"));
          break;
        }

      }
      br.close();
      Matcher mer = Pattern.compile("^[0-9]+$").matcher(subMemoryLine.replaceAll("D+", ""));
      //如果为正整数就说明数据正确的,确保在Double.parseDouble中不会异常
      if (mer.find()) {
        long memSize = Integer.parseInt(subMemoryLine.replaceAll("D+", "")) ;
        double mem = (Double.parseDouble(memSize + "")/1024)/1024;
        NumberFormat nf = new DecimalFormat( "0.0 ");
        mem = Double.parseDouble(nf.format(mem));
        //Log.e(LOG_TAG,"=========mem================ " + mem);
        return String.valueOf(mem);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return "Unavailable";
  }

adb 获取手机储存大小:

命令:adb shell cat /proc/partitions

代码:

private static final String FILENAME_PROC_EMMCINFO = "/proc/partitions";
 /**
   * 获取手机储存大小
   * @return
   */
 public static String getEmmcSize() {
    try {
      FileReader fr = new FileReader(FILENAME_PROC_EMMCINFO);
      BufferedReader br = new BufferedReader(fr, 2048);
      String Line = "";
      String EmmcSize = "";
      while ((Line = br.readLine()) != null)
      {
        if (Line.length()  7 && Line.lastIndexOf(" ")   0) {
          if (Line.substring(Line.lastIndexOf(" ") + 1 , Line.length()).equals("mmcblk0"))
          {

            EmmcSize = removeAllSpace(Line);
            break;
          }
        }

      }
      br.close();
      if (EmmcSize.length()  7 ){
        EmmcSize = (String) EmmcSize.subSequence(4, EmmcSize.length()-7);

        Matcher mer = Pattern.compile("^[0-9]+$").matcher(EmmcSize);
        //如果为正整数就说明数据正确的,确保在Double.parseDouble中不会异常
        if (mer.find()) {
          double mem = (Double.parseDouble(EmmcSize)/1024)/1024;
          NumberFormat nf = new DecimalFormat( "0.0 ");
          mem = Double.parseDouble(nf.format(mem));
          return String.valueOf(mem);
        }
      }
      return "0";
    } catch (IOException e) {
      e.printStackTrace();
    }
    return "Unavailable";
  }

以上就是本文的全部内容,希望对大家的学习有所帮助。