package com.video.ui.loader; import android.content.Context; import android.graphics.Point; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Base64; import android.view.Display; import android.view.WindowManager; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.File; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class Utils { public static boolean DEBUG = true; public static final int LARGE_NUMBER_BASE = 100000; public static boolean isConnected(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connManager.getActiveNetworkInfo(); return networkInfo != null && networkInfo.isConnected(); } public static String getStringMD5(String key){ MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } md5.update(key.getBytes()); //important: use Base64.URL_SAFE flag to avoid "+" and "/" return new String(Base64.encode(md5.digest(), Base64.URL_SAFE)); } public static String getCacheFolder(Context context) { File cacheFolder = new File(context.getCacheDir().getAbsolutePath() + File.separator + "app_icons"); if (!cacheFolder.exists()) { cacheFolder.mkdir(); } return cacheFolder.getAbsolutePath(); } public static String getSignature(byte[] data, byte[] key) throws InvalidKeyException, NoSuchAlgorithmException { SecretKeySpec signingKey = new SecretKeySpec(key, "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(signingKey); byte[] rawHmac = mac.doFinal(data); return byte2HexStr(rawHmac); } public static String byte2HexStr(byte[] b) { String stmp=""; StringBuilder sb = new StringBuilder(""); for (int n=0;n<b.length;n++) { stmp = Integer.toHexString(b[n] & 0xFF); sb.append((stmp.length()==1)? "0"+stmp : stmp); } return sb.toString().toLowerCase().trim(); } public static Integer getKeyByValue(Map<Integer, String> map, Object value) { Integer key = -1; Iterator<Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Entry<Integer, String> entry = (Entry<Integer, String>) it.next(); String obj = entry.getValue(); if (obj != null && obj.equals(value)) { // break as find the first key, assuming key and value are one-to-one key = (Integer) entry.getKey(); break; } } return key; } public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } public static Point getDisplaySize(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; int height = size.y; return new Point(width, height); } public static int dpToPx(int dp, Context ctx) { float density = ctx.getResources().getDisplayMetrics().density; return Math.round((float) dp * density); } }