package com.fancl.iloyalty.util;
import java.security.MessageDigest;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import com.fancl.iloyalty.Constants;
public class DeviceUtil {
public static String uuid = null;
public static String getDeviceUUID(Context context) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
Constants.SHARED_PREFERENCE_APPLICATION_KEY,
Context.MODE_PRIVATE);
uuid = sharedPreferences.getString(
Constants.SHARED_PREFERENCE_UUID_SAVE_KEY, null);
try {
if (StringUtil.isStringEmpty(uuid)) {
// get device IMEI first
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
uuid = telephonyManager.getDeviceId();
// if cannot get IMEI on device
// get WiFi MAC address to produce UUID
if (StringUtil.isStringEmpty(uuid)) {
WifiManager wifiMan = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String wiFiMacAddress = wifiInf.getMacAddress();
if (!StringUtil.isStringEmpty(wiFiMacAddress)) {
uuid = DeviceUtil.encrypt(wiFiMacAddress);
}
}
sharedPreferences
.edit()
.putString(Constants.SHARED_PREFERENCE_UUID_SAVE_KEY,
uuid).commit();
}
} catch (Exception e) {
}
return uuid;
}
private static String encrypt(String str) {
String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
result = toHexString(md.digest());
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private static String toHexString(byte[] in) {
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < in.length; i++) {
String hex = Integer.toHexString(0xFF & in[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
public static int getDeviceWidth(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
return display.getWidth();
}
public static int getDeviceHeight(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
return display.getHeight();
}
public static float getDeviceDenstity(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return metrics.density;
}
}