1 public class DevManager
2 {
3 private static final String TAG = "CpuManager";
4 Context mContext;
5
6 public DevManager()
7 {
8
9 }
10
11 public DevManager(Context context)
12 {
13 mContext = context;
14 }
15
16 // 获取CPU最大频率(单位KHZ)
17 // "/system/bin/cat" 命令行
18 // "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的路径
19 public static String getMaxCpuFreq()
20 {
21 String result = "";
22 ProcessBuilder cmd;
23 try
24 {
25 String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" };
26 cmd = new ProcessBuilder(args);
27 Process process = cmd.start();
28 InputStream in = process.getInputStream();
29 byte[] re = new byte[24];
30 while (in.read(re) != -1)
31 {
32 result = result + new String(re);
33 }
34 in.close();
35 } catch (IOException ex)
36 {
37 ex.printStackTrace();
38 result = "N/A";
39 }
40 return result.trim();
41 }
42
43 // 获取CPU最小频率(单位KHZ)
44 public static String getMinCpuFreq()
45 {
46 String result = "";
47 ProcessBuilder cmd;
48 try
49 {
50 String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq" };
51 cmd = new ProcessBuilder(args);
52 Process process = cmd.start();
53 InputStream in = process.getInputStream();
54 byte[] re = new byte[24];
55 while (in.read(re) != -1)
56 {
57 result = result + new String(re);
58 }
59 in.close();
60 } catch (IOException ex)
61 {
62 ex.printStackTrace();
63 result = "N/A";
64 }
65 return result.trim();
66 }
67
68 // 实时获取CPU当前频率(单位KHZ)
69 public static String getCurCpuFreq()
70 {
71 String result = "N/A";
72 try
73 {
74 FileReader fr = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");
75 BufferedReader br = new BufferedReader(fr);
76 String text = br.readLine();
77 result = text.trim();
78 } catch (FileNotFoundException e)
79 {
80 e.printStackTrace();
81 } catch (IOException e)
82 {
83 e.printStackTrace();
84 }
85 return result;
86 }
87
88 // 获取CPU名字
89 public static String getCpuName()
90 {
91 try
92 {
93 FileReader fr = new FileReader("/proc/cpuinfo");
94 BufferedReader br = new BufferedReader(fr);
95 String text = br.readLine();
96 String[] array = text.split(":\\s+", 2);
97 for (int i = 0; i < array.length; i++)
98 {
99 }
100 return array[1];
101 } catch (FileNotFoundException e)
102 {
103 e.printStackTrace();
104 } catch (IOException e)
105 {
106 e.printStackTrace();
107 }
108 return null;
109 }
110
111 // 内存
112 public void getTotalMemory()
113 {
114 String str1 = "/proc/meminfo";
115 String str2 = "";
116 try
117 {
118 FileReader fr = new FileReader(str1);
119 BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
120 while ((str2 = localBufferedReader.readLine()) != null)
121 {
122 Log.i(TAG, "---" + str2);
123 }
124 } catch (IOException e)
125 {
126 }
127 }
128
129 // rom大小
130 public long[] getRomMemroy()
131 {
132 long[] romInfo = new long[2];
133 // Total rom memory
134 romInfo[0] = getTotalInternalMemorySize();
135
136 // Available rom memory
137 File path = Environment.getDataDirectory();
138 StatFs stat = new StatFs(path.getPath());
139 long blockSize = stat.getBlockSize();
140 long availableBlocks = stat.getAvailableBlocks();
141 romInfo[1] = blockSize * availableBlocks;
142 getVersion();
143 return romInfo;
144 }
145
146 public long getTotalInternalMemorySize()
147 {
148 File path = Environment.getDataDirectory();
149 StatFs stat = new StatFs(path.getPath());
150 long blockSize = stat.getBlockSize();
151 long totalBlocks = stat.getBlockCount();
152 return totalBlocks * blockSize;
153 }
154
155 // sd卡大小
156 public long[] getSDCardMemory()
157 {
158 long[] sdCardInfo = new long[2];
159 String state = Environment.getExternalStorageState();
160 if (Environment.MEDIA_MOUNTED.equals(state))
161 {
162 File sdcardDir = Environment.getExternalStorageDirectory();
163 StatFs sf = new StatFs(sdcardDir.getPath());
164 long bSize = sf.getBlockSize();
165 long bCount = sf.getBlockCount();
166 long availBlocks = sf.getAvailableBlocks();
167
168 sdCardInfo[0] = bSize * bCount;// 总大小
169 sdCardInfo[1] = bSize * availBlocks;// 可用大小
170 }
171 return sdCardInfo;
172 }
173
174 // 电池容量
175 private BroadcastReceiver batteryReceiver = new BroadcastReceiver()
176 {
177
178 @Override
179 public void onReceive(Context context, Intent intent)
180 {
181 int level = intent.getIntExtra("level", 0);
182 // level加%就是当前电量了
183 }
184 };
185
186 // registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
187
188 // 系统版本信息
189 public String[] getVersion()
190 {
191 String[] version = { "null", "null", "null", "null" };
192 String str1 = "/proc/version";
193 String str2;
194 String[] arrayOfString;
195 try
196 {
197 FileReader localFileReader = new FileReader(str1);
198 BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
199 str2 = localBufferedReader.readLine();
200 arrayOfString = str2.split("\\s+");
201 version[0] = arrayOfString[2];// KernelVersion
202 localBufferedReader.close();
203 } catch (IOException e)
204 {
205 }
206 version[1] = Build.VERSION.RELEASE;// firmware version
207 version[2] = Build.MODEL;// model
208 version[3] = Build.DISPLAY;// system version
209 return version;
210 }
211
212 // mac地址和开机时间
213 public String[] getOtherInfo()
214 {
215 String[] other = { "null", "null" };
216 WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
217 WifiInfo wifiInfo = wifiManager.getConnectionInfo();
218 if (wifiInfo.getMacAddress() != null)
219 {
220 other[0] = wifiInfo.getMacAddress();
221 }
222 else
223 {
224 other[0] = "Fail";
225 }
226 other[1] = getTimes();
227 return other;
228 }
229
230 private String getTimes()
231 {
232 long ut = SystemClock.elapsedRealtime() / 1000;
233 if (ut == 0)
234 {
235 ut = 1;
236 }
237 int m = (int) ((ut / 60) % 60);
238 int h = (int) ((ut / 3600));
239 // return h + " " + mContext.getString(R.string.info_times_hour) + m + " " + mContext.getString(R.string.info_times_minute);
240 return h + " " + "时" + m + " " + "分";
241 }
242 }