1.内存信息

在proc/meminfo下有具体的内存使用情况,我这里获取的内存信息就是从这个文件中获取的.获取到具体的内存信息后依据我自己的需求,从bufferdreader中单独抽取出来了剩余的内存容量.

<span style="font-family:Microsoft YaHei;font-size:14px;">		Runtime runtime = Runtime.getRuntime();
Process p;
try {
p = runtime.exec(CMD_MEM);
} catch (IOException e) {
Log.e("CameraActivity", "run cmd("+CMD_MEM+") failed:" + e.getMessage());
return null;
}
InputStreamReader reader = new InputStreamReader(p.getInputStream());
BufferedReader buf = new BufferedReader(reader);</span>

2.磁盘信息

使用Android.os下的StatFs来获取文件系统状态和一些磁盘信息.

<span style="font-family:Microsoft YaHei;font-size:14px;">		File root = Environment.getRootDirectory();
StatFs sf = new StatFs(root.getPath());
long blockSize = sf.getBlockSize();
long availCount = sf.getAvailableBlocks();
return (availCount * blockSize) / 1024 / 1024 + "MB";</span>

3.CPU使用率,和当前进程的CPU占有率

3.1 CPU总使用率

在proc/stat下有具体的CPU使用情况.具体格式例如以下:

CPU 152342 1421 28562 1600830 12389 553 273 0 0

CPU后面的几位数字各自是

user     从系统启动開始累计到当前时刻。处于用户态的执行时间,不包括 nice值为负进程。

nice      从系统启动開始累计到当前时刻,nice值为负的进程所占用的CPU时间

system      从系统启动開始累计到当前时刻,处于核心态的执行时间

idle  
   从系统启动開始累计到当前时刻,除IO等待时间以外的其他等待时间

iowait     从系统启动開始累计到当前时刻。IO等待时间

irq       从系统启动開始累计到当前时刻,硬中断时间

softirq    从系统启动開始累计到当前时刻。软中断时间

所以totalCpuTime这个7个属性的和.

CPU总数用率的算法是:100*((totalCpuTimeS-totalCpuTimeF) -(idelS-idelF))/ (totalCpuTimeS-totalCpuTim
eF)

3.2 当前进程的CPU使用率

/proc/pid/stat下则是该pid的CPU使用情况.具体格式例如以下:

2341 (cn.jesse.camera) S 1131 1131 0 0 -1 3912246 12450 0 2 0
3321 612 0 0 20 0

当中淡红色的四位数字各自是:

utime 该任务在用户执行状态的时间

stime 该任务在核心执行的时间

cutime 全部已死线程在用户状态执行状态的时间

cstime 全部已死线程在核心的执行时间

所以processCpuTime为这个四个属性的和.

当前进行所占CPU的算法是:100*(processCpuTimeS-processCpuTimeF)/(totalCpuTimeS-totalCpuTimeF)

<span style="font-family:Microsoft YaHei;font-size:14px;">		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){
Log.e(TAG, "IOException" + ex.toString());
return 0;
}
long totalCpu = 0;
try{
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]);
}catch(ArrayIndexOutOfBoundsException e){
Log.i(TAG, "ArrayIndexOutOfBoundsException" + e.toString());
return 0;
}</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">		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 e){
Log.e(TAG, "IOException" + e.toString());
return 0;
}
long appCpuTime = 0;
try{
appCpuTime = Long.parseLong(cpuInfos[13])
+ Long.parseLong(cpuInfos[14]) + Long.parseLong(cpuInfos[15])
+ Long.parseLong(cpuInfos[16]);
}catch(ArrayIndexOutOfBoundsException e){
Log.i(TAG, "ArrayIndexOutOfBoundsException" + e.toString());
return 0;
}</span>

Android获取cpu使用率,剩余内存和硬盘容量的更多相关文章

  1. Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等

    #include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource ...

  2. 简单获取cpu使用率,以及后台运行的问题

    做了一个运维平台,有一个功能定时执行一个脚本,获取cpu使用率和内存使用情况到监控平台. 获取cpu使用率使用的是top中的信息.直接运行没有问题.通过nohup xxx.sh & 之后获取不 ...

  3. [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)

    github地址:https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...

  4. Android获取cpu和内存信息、网址的代码

      android获取手机cpu并判断是单核还是多核 /** * Gets the number of cores available in this device, across all proce ...

  5. C# 获取Windows系统:Cpu使用率,内存使用率,Mac地址,磁盘使用率

    一.获取CPU使用率: #region 获取CPU使用率         #region AIP声明          [DllImport("IpHlpApi.dll")]   ...

  6. 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等

    方法一: # import time 导入time模块 # import psutil 导入psutil模块 # def func(): # while True: ------->持续监控得w ...

  7. linux下实现CPU使用率和内存使用率获取方法

    想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率:    /proc/stat ,内存使用情况:     /p ...

  8. 获取Windows操作系统的CPU使用率以及内存使用率

    此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...

  9. Golang利用第三方包获取本机cpu使用率以及内存使用情况

    第三方包下载 $ github.com/shirou/gopsutil 获取内存方面的信息 package main import ( "fmt" "github.com ...

随机推荐

  1. SCU 4441 Necklace

    最长上升子序列,枚举. 因为$10000$最多只有$10$个,所以可以枚举采用哪一个$10000$,因为是一个环,所以每次枚举到一个$10000$,可以把这个移到最后,然后算从前往后的$LIS$和从后 ...

  2. Vijos1448 校门外的树 [树状数组]

    题目传送门 校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K= ...

  3. 图形管线之旅 Part4

    原文:<A trip through the Graphics Pipeline 2011> 翻译:往昔之剑   转载请注明出处   欢迎回来.上个部分是关于vertex shader的, ...

  4. Hibernate 组合主键映射

    在开发过程中创建数据库表时,有时候会发现单纯的创建一个主键是不可行的,有时候就需要多个字段联合保持唯一,本文讲述如何创建组合主键的映射. 例如:记录一个班的考试成绩.学生跟科目是多对多的关系,只有一个 ...

  5. [BZOJ4260]Codechef REBXOR(Trie)

    Trie模板题.求出每个前缀和后缀的最大异或和区间,枚举断点就可.不知为何跑得飞快. #include<cstdio> #include<cstring> #include&l ...

  6. BNU校赛总决赛J 小白兔小灰兔 相交计算几何模板

    J 小白兔小灰兔 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld 题目描述 ...

  7. [GCJ2017R3]Cooclement

    题目大意: 一种数列按照如下方式变化: 新数列第i位等于原数中数字i的出现次数. 变化过程中数列长度不变. 例如数列12的变化过程为12-11-20-01-10. 现在告诉你一个数列x,请求出x可能是 ...

  8. 树形DP--codevs 1380 没有上司的舞会

    codevs 1380 没有上司的舞会 变式题目:给定一棵树每个点有一个点权,求一个独立集使得点权和最大,树上的独立集指的是选取树上的点,使尽量多的点不直接相连  时间限制: 1 s  空间限制: 1 ...

  9. hdu 5204 Rikka with sequence 智商不够系列

    Rikka with sequence Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  10. 2015 UESTC 搜索专题E题 吴队长征婚 爆搜

    吴队长征婚 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Descri ...