/** 获取用户硬件信息 */ public static String getMobileInfo() { //StringBuffer sb = new StringBuffer(); JSONObject mbInfo = new JSONObject(); //通过反射获取用户硬件信息 try { Field[] fields = Build.class.getDeclaredFields(); for (Field field : fields) { // 暴力反射,获取私有信息 field.setAccessible(true); String name = field.getName(); String value = field.get(null).toString(); //sb.append(name + "=" + value); //sb.append("\n"); mbInfo.put(name, value); } } catch (Exception e) { e.printStackTrace(); } //return sb.toString(); return mbInfo.toString(); } static public String getCpuString(){ if(Build.CPU_ABI.equalsIgnoreCase("x86")){ return "Intel"; } String strInfo = ""; try { byte[] bs = new byte[1024]; RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r"); reader.read(bs); String ret = new String(bs); int index = ret.indexOf(0); if(index != -1) { strInfo = ret.substring(0, index); } else { strInfo = ret; } } catch (IOException ex){ ex.printStackTrace(); } return strInfo; } static public String getCpuType(){ String strInfo = getCpuString(); String strType = null; if (strInfo.contains("ARMv5")) { strType = "armv5"; } else if (strInfo.contains("ARMv6")) { strType = "armv6"; } else if (strInfo.contains("ARMv7")) { strType = "armv7"; } else if (strInfo.contains("Intel")){ strType = "x86"; }else{ strType = "unknown"; return strType; } if (strInfo.contains("neon")) { strType += "_neon"; }else if (strInfo.contains("vfpv3")) { strType += "_vfpv3"; }else if (strInfo.contains(" vfp")) { strType += "_vfp"; }else{ strType += "_none"; } return strType; } /** * @hide * @return */ public static CPUInfo getCPUInfo() { String strInfo = null; try { byte[] bs = new byte[1024]; RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r"); reader.read(bs); String ret = new String(bs); int index = ret.indexOf(0); if(index != -1) { strInfo = ret.substring(0, index); } else { strInfo = ret; } } catch (IOException ex) { strInfo = ""; ex.printStackTrace(); } CPUInfo info = parseCPUInfo(strInfo); info.mCPUMaxFreq = getMaxCpuFreq(); return info; } private final static String kCpuInfoMaxFreqFilePath = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"; private static int getMaxCpuFreq() { int result = 0; FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(kCpuInfoMaxFreqFilePath); br = new BufferedReader(fr); String text = br.readLine(); if (text != null) { result = Integer.parseInt(text.trim()); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fr != null) try { fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (br != null) try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } public static class CPUInfo{ public CPUInfo(){ } public static final int CPU_TYPE_UNKNOWN = 0x00000000; public static final int CPU_TYPE_ARMV5TE = 0x00000001; public static final int CPU_TYPE_ARMV6 = 0x00000010; public static final int CPU_TYPE_ARMV7 = 0x00000100; public static final int CPU_FEATURE_UNKNOWS = 0x00000000; public static final int CPU_FEATURE_VFP = 0x00000001; public static final int CPU_FEATURE_VFPV3 = 0x00000010; public static final int CPU_FEATURE_NEON = 0x00000100; public int mCPUType; public int mCPUCount; public int mCPUFeature; public double mBogoMips; public long mCPUMaxFreq; } /** * * @param cpuInfo * @return * @hide */ private static CPUInfo parseCPUInfo(String cpuInfo) { if (cpuInfo == null || "".equals(cpuInfo)) { return null; } CPUInfo ci = new CPUInfo(); ci.mCPUType = CPUInfo.CPU_TYPE_UNKNOWN; ci.mCPUFeature = CPUInfo.CPU_FEATURE_UNKNOWS; ci.mCPUCount = 1; ci.mBogoMips = 0; if (cpuInfo.contains("ARMv5")) { ci.mCPUType = CPUInfo.CPU_TYPE_ARMV5TE; } else if (cpuInfo.contains("ARMv6")) { ci.mCPUType = CPUInfo.CPU_TYPE_ARMV6; } else if (cpuInfo.contains("ARMv7")) { ci.mCPUType = CPUInfo.CPU_TYPE_ARMV7; } if (cpuInfo.contains("neon")) { ci.mCPUFeature |= CPUInfo.CPU_FEATURE_NEON; } if (cpuInfo.contains("vfpv3")) { ci.mCPUFeature |= CPUInfo.CPU_FEATURE_VFPV3; } if (cpuInfo.contains(" vfp")) { ci.mCPUFeature |= CPUInfo.CPU_FEATURE_VFP; } String[] items = cpuInfo.split("\n"); for (String item : items) { if (item.contains("CPU variant")) { int index = item.indexOf(": "); if (index >= 0) { String value = item.substring(index + 2); try { ci.mCPUCount = Integer.decode(value); ci.mCPUCount = ci.mCPUCount == 0 ? 1 : ci.mCPUCount; } catch (NumberFormatException e) { ci.mCPUCount = 1; } } } else if (item.contains("BogoMIPS")) { int index = item.indexOf(": "); if (index >= 0) { String value = item.substring(index + 2); } } } return ci; } /** * 获取设备内存大小值 * @return 内存大小,单位MB */ public static long 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(); if (str2 != null) { arrayOfString = str2.split("\\s+"); initial_memory = Integer.valueOf(arrayOfString[1]).intValue()/1024; } localBufferedReader.close(); return initial_memory; } catch (IOException e) { return -1; } } /** * @hide * @return */ public CPUInfo getCPUInfo() { String strInfo = null; try { byte[] bs = new byte[1024]; RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r"); reader.read(bs); String ret = new String(bs); int index = ret.indexOf(0); if(index != -1) { strInfo = ret.substring(0, index); } else { strInfo = ret; } } catch (IOException ex) { strInfo = ""; ex.printStackTrace(); } CPUInfo info = parseCPUInfo(strInfo); info.mCPUMaxFreq = getMaxCpuFreq(); return info; } /** * 获取android CPU类型 * * @return String CPU类型 */ public static String getCpuModel(){ String cpu_model = ""; CPUInfo in = getCPUInfo(); if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV5TE) == CPUInfo.CPU_TYPE_ARMV5TE) cpu_model="armv5"; else if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV6) == CPUInfo.CPU_TYPE_ARMV6) cpu_model="armv6"; else if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV7) == CPUInfo.CPU_TYPE_ARMV7) cpu_model="armv7"; else cpu_model="unknown"; return cpu_model; } /** * 获取android CPU特性 * * @return String CPU特性 */ public static String getCpuFeature(){ String cpu_feature = ""; CPUInfo in = getCPUInfo(); if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_NEON ) == CPUInfo.CPU_FEATURE_NEON) cpu_feature="neon"; else if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_VFP ) == CPUInfo.CPU_FEATURE_VFP) cpu_feature="vfp"; else if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_VFPV3 ) == CPUInfo.CPU_FEATURE_VFPV3) cpu_feature="vfpv3"; else cpu_feature="unknown"; return cpu_feature; } /** * 获取ip地址 * * @param mContext Context * @return ip地址字符串 */ public static String getIpAddress(Context mContext) { String ipAddress = null; try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf .getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { ipAddress = inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { return null; } if (DEBUG) { Log.d(TAG, "ip address:" + ipAddress); } return ipAddress; }
?