在安卓开发过程中,有时需要获取设备硬件信息以及网络信息,包括设备型号、CPU信息、RAM以及ROM信息、摄像头信息、分辨率、运营商信息等。网上逐条搜索相关方法比较繁琐,因此本文总结了相关信息的具体获取方法。本文所有代码能获取的设备信息如下图所示:

首先在manifest.xml添加以下权限:
| 1 2 3 4 5 6 7 8 9
 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 | 
下面开始逐一获取设备相关信息分条目添加至某一FragmentPage中的LinearLayout pwTable中。
通过以下代码获取设备型号:
| 1 2 3 4
 | TextView p_model = new TextView(getActivity()); p_model.setTextColor(Color.BLACK); p_model.setText("手机型号:" + android.os.Build.MODEL); pwTable.addView(p_model);
 | 
通过以下代码获取手机品牌:
| 1 2 3 4
 | TextView p_brand = new TextView(getActivity()); p_brand.setTextColor(Color.BLACK); p_brand.setText("手机品牌:" + android.os.Build.BRAND); pwTable.addView(p_brand);
 | 
通过以下代码获取手机制造商,此条目信息通常情况与手机品牌一致:
| 1 2 3 4
 | TextView p_company = new TextView(getActivity()); p_company.setTextColor(Color.BLACK); p_company.setText("制造商:" + android.os.Build.MANUFACTURER); pwTable.addView(p_company);
 | 
通过以下代码获取安卓版本信息:
| 1 2 3 4
 | TextView p_and = new TextView(getActivity()); p_and.setTextColor(Color.BLACK); p_and.setText("Android版本号:" + android.os.Build.VERSION.RELEASE); pwTable.addView(p_and);
 | 
通过以下代码获取CPU型号信息:
| 1 2 3 4
 | TextView p_cpuname = new TextView(getActivity()); p_cpuname.setTextColor(Color.BLACK); p_cpuname.setText("CPU型号:" + android.os.Build.HARDWARE); pwTable.addView(p_cpuname);
 | 
通过以下代码获取CPU架构信息:
| 1 2 3 4
 | TextView p_cputype = new TextView(getActivity()); p_cputype.setTextColor(Color.BLACK); p_cputype.setText("CPU架构:" + android.os.Build.CPU_ABI); pwTable.addView(p_cputype);
 | 
通过以下代码获取CPU核心数信息:
| 1 2 3 4 5 6 7 8 9 10 11 12
 | int cores; try{ 	cores = new File("/sys/devices/system/cpu/").listFiles(CPU_FILTER).length; } catch(SecurityException e){ 	cores = 0; } catch(NullPointerException e){ 	cores = 0; } TextView p_cpucore = new TextView(getActivity()); p_cpucore.setTextColor(Color.BLACK); p_cpucore.setText("CPU核心数:" + cores); pwTable.addView(p_cpucore);
 | 
通过以下代码获取CPU最高频率信息:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 | int maxRate1 = 0; double temp; String maxRate = "0"; try { 	FileReader fr1 = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); 	BufferedReader br1 = new BufferedReader(fr1); 	String text1 = br1.readLine(); 	maxRate1 = Integer.parseInt(text1); 	temp = maxRate1 / 1000.0; 	maxRate = String.format("%.1f", temp); 	br1.close(); } catch (IOException e) { 	 } TextView p_cpurate = new TextView(getActivity()); p_cpurate.setTextColor(Color.BLACK); p_cpurate.setText("CPU最高频率:" + maxRate + "MHz"); pwTable.addView(p_cpurate);
 | 
通过以下代码获取CPU最低频率信息:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 | int minRate1 = 0; String minRate = "0"; try { 	FileReader fr2 = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq"); 	BufferedReader br2 = new BufferedReader(fr2); 	String text2 = br2.readLine(); 	minRate1 = Integer.parseInt(text2); 	temp = minRate1 / 1000.0; 	minRate = String.format("%.1f", temp); 	br2.close(); } catch (IOException e) { 	 } TextView p_cpurate2 = new TextView(getActivity()); p_cpurate2.setTextColor(Color.BLACK); p_cpurate2.setText("CPU最低频率:" + minRate + "MHz"); pwTable.addView(p_cpurate2);
 | 
通过以下代码获取CPU温度:
| 1 2 3 4 5 6 7 8 9 10 11 12 13
 | String text4 = "0"; try { 	FileReader fr4 = new FileReader("/sys/class/thermal/thermal_zone9/subsystem/thermal_zone9/temp"); 	BufferedReader br4 = new BufferedReader(fr4); 	text4 = br4.readLine(); 	br4.close(); } catch (IOException e) { 	 } TextView p_temp = new TextView(getActivity()); p_temp.setTextColor(Color.BLACK); p_temp.setText("CPU温度:" + text4 + "℃"); pwTable.addView(p_temp);
 | 
通过以下代码获取RAM大小信息:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 | int memorySize = 0; String ramSize = "0"; try { 	FileReader fr3 = new FileReader("/proc/meminfo"); 	BufferedReader br3 = new BufferedReader(fr3); 	String memoryLine = br3.readLine(); 	String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:")); 	memorySize = Integer.parseInt(subMemoryLine.replaceAll("\\D+", "")); 	temp = memorySize / 1000000.0; 	ramSize = String.format("%.1f", temp); 	br3.close(); } catch (IOException e) { 	 } TextView p_ram = new TextView(getActivity()); p_ram.setTextColor(Color.BLACK); p_ram.setText("RAM大小:" + ramSize + "GB"); pwTable.addView(p_ram);
 | 
通过以下代码获取ROM大小信息:
| 1 2 3 4 5 6 7 8 9 10
 | StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); long romSize1 = blockSize * totalBlocks; temp = romSize1 / 1000000000.0; String romSize = String.format("%.1f", temp); TextView p_rom = new TextView(getActivity()); p_rom.setTextColor(Color.BLACK); p_rom.setText("ROM大小:" + romSize + "GB"); pwTable.addView(p_rom);
 | 
通过以下代码获取电池容量信息:
| 1 2 3 4 5 6
 | PowerProfile pp = new PowerProfile(getActivity()); int batteryRate = (int) pp.getBatteryCapacity(); TextView p_batteryrate = new TextView(getActivity()); p_batteryrate.setTextColor(Color.BLACK); p_batteryrate.setText("电池容量:" + batteryRate + "mAh"); pwTable.addView(p_batteryrate);
 | 
通过以下代码获取前置摄像头像素信息:
| 1 2 3 4
 | TextView p_front = new TextView(getActivity()); p_front.setTextColor(Color.BLACK); p_front.setText("前置摄像头像素:" + CameraUtils.getCameraPixels(CameraUtils.HasFrontCamera())); pwTable.addView(p_front);
 | 
通过以下代码获取后置摄像头像素信息: 
| 1 2 3 4
 | TextView p_back = new TextView(getActivity()); p_back.setTextColor(Color.BLACK); p_back.setText("后置摄像头像素:" + CameraUtils.getCameraPixels(CameraUtils.HasBackCamera())); pwTable.addView(p_back);
 | 
通过以下代码获取屏幕分辨率信息(有虚拟按键时会有误差):
| 1 2 3 4 5 6 7 8
 | WindowManager windowManager = getActivity().getWindowManager();     Display display = windowManager.getDefaultDisplay();     int screenWidth = screenWidth = display.getWidth();     int screenHeight = screenHeight = display.getHeight(); TextView p_screen = new TextView(getActivity()); p_screen.setTextColor(Color.BLACK); p_screen.setText("屏幕分辨率:" + screenHeight + "×" + screenWidth); pwTable.addView(p_screen);
 | 
通过以下代码获取本机号码信息(双卡手机此方法只能获取卡1号码):
| 1 2 3 4
 | TextView p_num = new TextView(getActivity()); p_num.setTextColor(Color.BLACK); p_num.setText("本机号码:" + num); pwTable.addView(p_num);
 | 
通过以下代码获取运营商名称(同样此方法只能获取卡1运营商):
| 1 2 3 4
 | TextView p_nm = new TextView(getActivity()); p_nm.setTextColor(Color.BLACK); p_nm.setText("运营商名称:" + nm); pwTable.addView(p_nm);
 | 
通过以下代码获取IMEI码(同样获取的是卡1的IMEI码):
| 1 2 3 4
 | TextView p_imei = new TextView(getActivity()); p_imei.setTextColor(Color.BLACK); p_imei.setText("IMEI码:" + imei); pwTable.addView(p_imei);
 | 
通过以下代码获取手机MAC地址:
| 1 2 3 4 5 6
 | WifiManager wifiMng = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfor = wifiMng.getConnectionInfo(); TextView p_mac = new TextView(getActivity()); p_mac.setTextColor(Color.BLACK); p_mac.setText("MAC地址:" + wifiInfor.getMacAddress()); pwTable.addView(p_mac);
 | 
具体实际应用请见我的GitHub:FragmentPage2.java