14cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerpackage js.kbars;
24cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler
34cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerimport android.content.Context;
44cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerimport android.content.pm.PackageManager.NameNotFoundException;
54cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerimport android.util.DisplayMetrics;
64cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerimport android.view.WindowManager;
74cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerimport java.lang.reflect.Field;
84cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler
94cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandlerpublic class Util {
104cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    public static String logTag(Class<?> c) {
114cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        return "kbars." + c.getSimpleName();
124cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    }
134cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler
144cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    public static Object getField(Object obj, String fieldName) {
154cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        Class<?> c = obj.getClass();
164cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        try {
174cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            if (obj instanceof String) {
184cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler                c = c.getClassLoader().loadClass((String) obj);
194cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler                obj = null;
204cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            }
214cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            Field f = c.getDeclaredField(fieldName);
224cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            f.setAccessible(true);
234cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            return f.get(obj);
244cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        } catch (Throwable t) {
254cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            throw new RuntimeException(t);
264cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        }
274cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    }
284cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler
294cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    public static int getDensityDpi(Context context) {
304cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        DisplayMetrics metrics = new DisplayMetrics();
314cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        ((WindowManager) context.getSystemService("window")).getDefaultDisplay().getMetrics(metrics);
324cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        return metrics.densityDpi;
334cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    }
344cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler
354cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    public static String getVersionName(Context context) {
364cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        try {
374cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
384cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        } catch (NameNotFoundException e) {
394cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler            throw new RuntimeException(e);
404cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler        }
414cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler    }
424cb0d34ba8edb5affdd0bcf76905571b8624c68cDan Sandler}
43