现在论坛里越来越多垃圾了,两个小功能都要30分,还是代码搬运工,以前一些大神辛苦封装的都免费,这种垃圾搬运几行代码都要收30分。现在代码我贴出来,大家自己看。
下面看不懂的,这有demo链接
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135/** * 获取内存可用空间 * @return */ public static String getAvailMemory() {// 获取android当前可用内存大小 ActivityManager am = (ActivityManager) MyApplication.getInstance().getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); //mi.availMem; 当前系统的可用内存 return Formatter.formatFileSize(MyApplication.getInstance(), mi.availMem);// 将获取的内存大小规格化 } /** * 获取内存总共空间 * @return */ public static String getTotalMemory() { String str1 = "/proc/meminfo";// 系统内存信息文件 String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小 arrayOfString = str2.split("\s+"); for (String num : arrayOfString) { Log.e(str2, num + "t"); } initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte localBufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } return Formatter.formatFileSize(MyApplication.getInstance(), initial_memory);// Byte转换为KB或者MB,内存大小规格化 } /** * 获取cpu使用率 * @return */ public static float getCpuUsed() { try { RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r"); String load = reader.readLine(); String[] toks = load.split(" "); long idle1 = Long.parseLong(toks[5]); long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); try { Thread.sleep(360); } catch (Exception e) { e.printStackTrace(); } reader.seek(0); load = reader.readLine(); reader.close(); toks = load.split(" "); long idle2 = Long.parseLong(toks[5]); long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); return (float) (cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1)); } catch (IOException ex) { ex.printStackTrace(); } return 0; } /** * 外部存储是否可用 (存在且具有读写权限) */ public static boolean isExternalStorageAvailable() { return Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); } /** * 获取手机内部可用空间大小 * @return */ static public String getAvailableInternalMemorySize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize); } /** * 获取手机内部空间大小 * @return */ public static String getTotalInternalMemorySize() { File path = Environment.getDataDirectory();//Gets the Android data directory StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); //每个block 占字节数 long totalBlocks = stat.getBlockCount(); //block总数 return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize); } /** * 获取手机外部可用空间大小 * @return */ public static String getAvailableExternalMemorySize() { if (isExternalStorageAvailable()) { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return Formatter.formatFileSize(MyApplication.getInstance(),availableBlocks * blockSize); } else { return "-1"; } } /** * 获取手机外部总空间大小 * @return */ public static String getTotalExternalMemorySize() { if (isExternalStorageAvailable()) { StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); return Formatter.formatFileSize(MyApplication.getInstance(),totalBlocks * blockSize); } else { return "-1"; } }
最后
以上就是追寻毛豆最近收集整理的关于Android获取CPU,内存,磁盘使用率的全部内容,更多相关Android获取CPU内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复