1.  
  2. import java.io.BufferedReader;  
  3. import java.io.FileReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.io.LineNumberReader;  
  7.  
  8. import android.content.Context;  
  9. import android.net.wifi.WifiInfo;  
  10. import android.net.wifi.WifiManager;  
  11. import android.provider.Settings;  
  12. import android.telephony.TelephonyManager;  
  13. import android.util.Log;  
  14.  
  15. public class GetPhoneInfo {  
  16.  
  17.     Context context;  
  18.  
  19.     public GetPhoneInfo(Context context) {  
  20.         // TODO Auto-generated constructor stub  
  21.         this.context = context;  
  22.  
  23.     }  
  24.  
  25.     /**  
  26.      * 1.获取wifi mac 地址  
  27.      * */ 
  28.     public  String getWiFiMacInfo() {  
  29.         WifiManager wifi = (WifiManager) context  
  30.                 .getSystemService(Context.WIFI_SERVICE);  
  31.         WifiInfo info = wifi.getConnectionInfo();  
  32.         String maxText = info.getMacAddress();  
  33.         //Log.d("GetInfo", "wifi mac = " + maxText);  
  34.         return maxText;  
  35.     }  
  36.  
  37.     /**  
  38.      * 2.获取IMEI  
  39.      * */ 
  40.  
  41.     public String getImei() {  
  42.         TelephonyManager tm = (TelephonyManager) context  
  43.                 .getSystemService(context.TELEPHONY_SERVICE);  
  44.         Log.d("GetInfo""DeviceId = " + tm.getDeviceId());  
  45.  
  46.         return tm.getDeviceId();  
  47.  
  48.     }  
  49.  
  50.     /**  
  51.      * 3.获取IMSI国际移动用户识别码,SIM卡唯一序列号,可能返回null  
  52.      */ 
  53.     public String getMyImsi() {  
  54.         TelephonyManager tm = (TelephonyManager) context  
  55.                 .getSystemService(context.TELEPHONY_SERVICE);  
  56.         //Log.d("GetInfo", "SubscriberId = " + tm.getSubscriberId());  
  57.         if (tm.getSubscriberId() != null) {  
  58.             return tm.getSubscriberId();  
  59.         } else {  
  60.             return "";  
  61.         }  
  62.  
  63.     }  
  64.  
  65.     /**  
  66.      * 4.获取AndroidID  
  67.      */ 
  68.     public String getAndroidId() {  
  69.         String androidId = Settings.Secure.getString(  
  70.                 context.getContentResolver(), Settings.Secure.ANDROID_ID);  
  71.         //Log.d("GetInfo", "androidId = " + androidId);  
  72.         return androidId;  
  73.     }  
  74.  
  75.     /**  
  76.      * 5.获取SSN,所有CDMA设备返回NULL,  
  77.      */ 
  78.     public String getSSN() {  
  79.         TelephonyManager tm = (TelephonyManager) context  
  80.                 .getSystemService(context.TELEPHONY_SERVICE);  
  81.         //Log.d("GetInfo", "SSN = " + tm.getSimSerialNumber());  
  82.         if (tm.getSimSerialNumber() != null) {  
  83.             return tm.getSimSerialNumber();  
  84.         } else {  
  85.             return "";  
  86.         }  
  87.  
  88.     }  
  89.  
  90.     //  
  91.     // /**  
  92.     // *  
  93.     // * 6.取imei androidID 结合UUID并加密  
  94.     // * */  
  95.     // private String getOnlyFlag() {  
  96.     // String a = getAndroidId();  
  97.     // String b = getImei();  
  98.     // String c = getSSN();  
  99.     // UUID deviceUuid = new UUID(getAndroidId().hashCode(),  
  100.     // ((long) getImei().hashCode() << 32) | getSSN().hashCode());  
  101.     // String uniqueId = deviceUuid.toString();  
  102.     // Log.d("GetInfo", "uniqueId = " + uniqueId);  
  103.     // return uniqueId;  
  104.     // }  
  105.  
  106.     // =======================================================以下是获取硬件设备信息  
  107.     /**  
  108.      * 6.1.获取CPU序列号  
  109.      *   
  110.      * @return CPU序列号(16位) 读取失败为"0000000000000000"  
  111.      */ 
  112.  
  113.     public  String getCPUSerial() {  
  114.         String str = "", strCPU = "", cpuAddress = "0000000000000000";  
  115.         try {  
  116.             // 读取CPU信息  
  117.             Process pp = Runtime.getRuntime().exec("cat /proc/cpuinfo");  
  118.             InputStreamReader ir = new InputStreamReader(pp.getInputStream());  
  119.             LineNumberReader input = new LineNumberReader(ir);  
  120.             // 查找CPU序列号  
  121.             for (int i = 1; i < 100; i++) {  
  122.  
  123.                 str = input.readLine();  
  124.  
  125.                 if (str != null) {  
  126.                     // 查找到序列号所在行  
  127.                     if (str.indexOf("Serial") > -1) {  
  128.                         // 提取序列号  
  129.                         strCPU = str.substring(str.indexOf(":") + 1,  
  130.  
  131.                         str.length());  
  132.                         // 去空格  
  133.                         cpuAddress = strCPU.trim();  
  134.  
  135.                         break;  
  136.                     }  
  137.  
  138.                 } else {  
  139.                     // 文件结尾  
  140.                     break;  
  141.                 }  
  142.             }  
  143.  
  144.         } catch (IOException ex) {  
  145.             ex.printStackTrace();  
  146.         }  
  147.         //Log.d("GetInfo", "cpuAddress = " + cpuAddress);  
  148.         return cpuAddress;  
  149.     }  
  150.  
  151.     // 6.2获取CPU型号  
  152.     public String getCpuInfo() {  
  153.         String str1 = "/proc/cpuinfo";  
  154.         String str2 = "";  
  155.         String cpuModel = "";  
  156.         String[] arrayOfString;  
  157.         try {  
  158.             FileReader fr = new FileReader(str1);  
  159.             BufferedReader localBufferedReader = new BufferedReader(fr, 8192);  
  160.             str2 = localBufferedReader.readLine();  
  161.             arrayOfString = str2.split("\\s+");  
  162.             for (int i = 2; i < arrayOfString.length; i++) {  
  163.                 cpuModel = cpuModel + arrayOfString[i] + " ";  
  164.             }  
  165.             localBufferedReader.close();  
  166.         } catch (IOException e) {  
  167.         }  
  168.         return cpuModel;  
  169.     }  
  170.  
  171. }