package com.ihongqiqu.util; import android.content.Context; import android.content.SharedPreferences; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.preference.PreferenceManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import java.util.UUID; /** * Created by zhenguo on 12/21/16. */ public class DeviceUtils { /**

* deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符 * * 渠道标志为: * 1,andriod(a) * * 识别符来源标志: * 1, wifi mac地址(wifi); * 2, IMEI(imei); * 3, 序列号(sn); * 4, id:随机码。若前面的都取不到时,则随机生成一个随机码,需要缓存。 * * @param context * @return */ public static String getDeviceId(Context context) { StringBuilder deviceId = new StringBuilder(); // 渠道标志 deviceId.append("a"); try { //wifi mac地址 WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); String wifiMac = info.getMacAddress(); if(!TextUtils.isEmpty(wifiMac)){ deviceId.append("wifi"); deviceId.append(wifiMac); if (BuildConfig.DEBUG) Log.e("getDeviceId : ", deviceId.toString()); return deviceId.toString(); } //IMEI(imei) TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getDeviceId(); if(!TextUtils.isEmpty(imei)){ deviceId.append("imei"); deviceId.append(imei); if (BuildConfig.DEBUG) Log.e("getDeviceId : ", deviceId.toString()); return deviceId.toString(); } //序列号(sn) String sn = tm.getSimSerialNumber(); if(!TextUtils.isEmpty(sn)){ deviceId.append("sn"); deviceId.append(sn); if (BuildConfig.DEBUG) Log.e("getDeviceId : ", deviceId.toString()); return deviceId.toString(); } //如果上面都没有, 则生成一个id:随机码 String uuid = getUUID(context); if(!TextUtils.isEmpty(uuid)){ deviceId.append("id"); deviceId.append(uuid); if (BuildConfig.DEBUG) Log.e("getDeviceId : ", deviceId.toString()); return deviceId.toString(); } } catch (Exception e) { e.printStackTrace(); deviceId.append("id").append(UUID.randomUUID().toString()); } if (BuildConfig.DEBUG) Log.e("getDeviceId : ", deviceId.toString()); return deviceId.toString(); } /** * 得到全局唯一UUID */ public static String getUUID(Context context){ String uuid = null; SharedPreferences mShare = PreferenceManager.getDefaultSharedPreferences(context);//, "sysCacheMap"); if(mShare != null){ uuid = mShare.getString("uuid", ""); } if(TextUtils.isEmpty(uuid)){ uuid = UUID.randomUUID().toString(); if (mShare != null) { mShare.edit().putString("uuid", uuid).commit(); } } if (BuildConfig.DEBUG) Log.d("DeviceUtils", "getUUID : " + uuid); return uuid; } }