Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例,第1张

概述本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下:

本文实例讲述了AndroID编程实现获取系统内存、cpu使用率及状态栏高度的方法。分享给大家供大家参考,具体如下:

DeviceInfoManage类用于获取系统的内存,cpu的信息,以及状态栏的高度

import java.io.BufferedReader;import java.io.fileinputStream;import java.io.fileReader;import java.io.IOException;import java.io.inputStreamReader;import java.lang.reflect.FIEld;import java.util.List;import androID.app.ActivityManager;import androID.app.ActivityManager.RunningTaskInfo;import androID.content.Context;public class DeviceInfoManager {// private static final String TAG = "DeviceInfoManager";  private static ActivityManager mActivityManager;  public synchronized static ActivityManager getActivityManager(Context context) {    if (mActivityManager == null) {      mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);    }    return mActivityManager;  }  /**   * 用于获取状态栏的高度。   *   * @return 返回状态栏高度的像素值。   */  public static int getStatusbarHeight(Context context) {    int statusbarHeight = 0;    try {      Class<?> c = Class.forname("com.androID.internal.R$dimen");      Object o = c.newInstance();      FIEld fIEld = c.getFIEld("status_bar_height");      int x = (Integer) fIEld.get(o);      statusbarHeight = context.getResources().getDimensionPixelSize(x);    } catch (Exception e) {      e.printstacktrace();    }    return statusbarHeight;  }  /**   * 计算已使用内存的百分比,并返回。   *   * @param context   *      可传入应用程序上下文。   * @return 已使用内存的百分比,以字符串形式返回。   */  public static String getUsedPercentValue(Context context) {    long totalMemorySize = getTotalMemory();    long availableSize = getAvailableMemory(context) / 1024;    int percent = (int) ((totalMemorySize - availableSize) / (float) totalMemorySize * 100);    return percent + "%";  }  /**   * 获取当前可用内存,返回数据以字节为单位。   *   * @param context 可传入应用程序上下文。   * @return 当前可用内存。   */  public static long getAvailableMemory(Context context) {    ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();    getActivityManager(context).getMemoryInfo(mi);    return mi.availMem;  }  /**   * 获取系统总内存,返回字节单位为KB   * @return 系统总内存   */  public static long getTotalMemory() {    long totalMemorySize = 0;    String dir = "/proc/meminfo";    try {      fileReader fr = new fileReader(dir);      BufferedReader br = new BufferedReader(fr,2048);      String memoryline = br.readline();      String subMemoryline = memoryline.substring(memoryline.indexOf("MemTotal:"));      br.close();      //将非数字的字符替换为空      totalMemorySize = Integer.parseInt(subMemoryline.replaceAll("\D+",""));    } catch (IOException e) {      e.printstacktrace();    }    return totalMemorySize;  }  /**   * 获取顶层activity的包名   * @param context   * @return activity的包名   */  public static String gettopActivityPackagename(Context context) {    ActivityManager activityManager = getActivityManager(context);    List<RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);    return runningTasks.get(0).topActivity.getPackagename();  }  /**   * 获取当前进程的cpu使用率   * @return cpu的使用率   */  public static float getCurProcesscpuRate()  {    float totalcpuTime1 = getTotalcpuTime();    float processcpuTime1 = getAppcpuTime();    try    {      Thread.sleep(360);    }    catch (Exception e)    {    }    float totalcpuTime2 = getTotalcpuTime();    float processcpuTime2 = getAppcpuTime();    float cpuRate = 100 * (processcpuTime2 - processcpuTime1)        / (totalcpuTime2 - totalcpuTime1);    return cpuRate;  }  /**   * 获取总的cpu使用率   * @return cpu使用率   */  public static float getTotalcpuRate() {    float totalcpuTime1 = getTotalcpuTime();    float totalUsedcpuTime1 = totalcpuTime1 - sstatus.IDletime;    try {      Thread.sleep(360);    } catch (InterruptedException e) {      e.printstacktrace();    }    float totalcpuTime2 = getTotalcpuTime();    float totalUsedcpuTime2 = totalcpuTime2 - sstatus.IDletime;    float cpuRate = 100 * (totalUsedcpuTime2 - totalUsedcpuTime1)        / (totalcpuTime2 - totalcpuTime1);    return cpuRate;  }  /**   * 获取系统总cpu使用时间   * @return 系统cpu总的使用时间   */  public static long getTotalcpuTime()  {    String[] cpuInfos = null;    try    {      BufferedReader reader = new BufferedReader(new inputStreamReader(          new fileinputStream("/proc/stat")),1000);      String load = reader.readline();      reader.close();      cpuInfos = load.split(" ");    }    catch (IOException ex)    {      ex.printstacktrace();    }//   long totalcpu = Long.parseLong(cpuInfos[2])//       + Long.parseLong(cpuInfos[3]) + Long.parseLong(cpuInfos[4])//       + Long.parseLong(cpuInfos[6]) + Long.parseLong(cpuInfos[5])//       + Long.parseLong(cpuInfos[7]) + Long.parseLong(cpuInfos[8]);    sstatus.usertime = Long.parseLong(cpuInfos[2]);    sstatus.nicetime = Long.parseLong(cpuInfos[3]);    sstatus.systemtime = Long.parseLong(cpuInfos[4]);    sstatus.IDletime = Long.parseLong(cpuInfos[5]);    sstatus.iowaittime = Long.parseLong(cpuInfos[6]);    sstatus.irqtime = Long.parseLong(cpuInfos[7]);    sstatus.softirqtime = Long.parseLong(cpuInfos[8]);    return sstatus.getTotalTime();  }  /**   * 获取当前进程的cpu使用时间   * @return 当前进程的cpu使用时间   */  public static long getAppcpuTime()  {    // 获取应用占用的cpu时间    String[] cpuInfos = null;    try    {      int pID = androID.os.Process.myPID();      BufferedReader reader = new BufferedReader(new inputStreamReader(          new fileinputStream("/proc/" + pID + "/stat")),1000);      String load = reader.readline();      reader.close();      cpuInfos = load.split(" ");    }    catch (IOException ex)    {      ex.printstacktrace();    }    long appcpuTime = Long.parseLong(cpuInfos[13])        + Long.parseLong(cpuInfos[14]) + Long.parseLong(cpuInfos[15])        + Long.parseLong(cpuInfos[16]);    return appcpuTime;  }  static Status sstatus = new Status();  static class Status {    public long usertime;    public long nicetime;    public long systemtime;    public long IDletime;    public long iowaittime;    public long irqtime;    public long softirqtime;    public long getTotalTime() {      return (usertime + nicetime + systemtime + IDletime + iowaittime          + irqtime + softirqtime);    }  }}

更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android资源 *** 作技巧汇总》、《Android视图View技巧总结》、《Android *** 作XML数据技巧总结》、《Android编程之activity *** 作技巧总结》、《Android文件 *** 作技巧汇总》、《Android *** 作json格式数据技巧总结》、《Android开发入门与进阶教程》及《Android控件用法总结》

希望本文所述对大家AndroID程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例全部内容,希望文章能够帮你解决Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1144657.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存