package com.conference.app.lib.util;
import java.security.MessageDigest;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.BitmapFactory;
import android.graphics.Point;
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;
public class DeviceUtil {
public static String uuid = null;
public static boolean isStringEmpty(String string) {
if (string != null) {
if (string.trim().length() > 0) {
return false;
}
}
return true;
}
public static String getDeviceUUID(Context context)
{
SharedPreferences sharedPreferences = context.getSharedPreferences("shared_preference_application_key", Context.MODE_PRIVATE);
uuid = sharedPreferences.getString("shared_preference_uuid_save_key", null);
try
{
if(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(isStringEmpty(uuid))
{
WifiManager wifiMan = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
String wiFiMacAddress = wifiInf.getMacAddress();
if(!isStringEmpty(wiFiMacAddress))
{
uuid = DeviceUtil.encrypt(wiFiMacAddress);
}
}
sharedPreferences.edit().putString("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();
Point size = new Point();
display.getSize(size);
int width = size.x;
return width;
}
public static int getDeviceHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;
return height;
}
public static float getDeviceDenstity(Context context) {
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
return metrics.density;
}
public static int px2dip(Context context, int px) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) ((px - 0.5f) / scale);
}
public static int dip2px(Context context, int dip) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dip * scale + 0.5f);
}
public static Point scaleWithScreenWidth(Context context, Point dip) {
Point scaleDip = new Point(0, 0);
scaleDip.x = Math.round((float) dip.x / (float) 320F * (float) DeviceUtil.getDeviceWidth(context));
scaleDip.y = Math.round((float) scaleDip.x / (float) dip.x * (float) dip.y);
return scaleDip;
}
public static Point scaleWithScreenHeight(Context context, Point dip) {
Point scaleDip = new Point(0, 0);
scaleDip.y = Math.round((float) dip.y / (float) 320F * (float) DeviceUtil.getDeviceHeight(context));
scaleDip.x = Math.round((float) scaleDip.y / (float) dip.y * (float) dip.x);
return scaleDip;
}
public static int computeSampleSize(String pathName, int maxW, int maxH) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(pathName, options);
double w = options.outWidth;
double h = options.outHeight;
int sampleSize = (int) Math.ceil(Math.max(w / maxW, h / maxH));
return sampleSize;
}
}