package org.shikato.infodumper.dump; import android.content.Context; import android.util.DisplayMetrics; import android.view.WindowManager; import com.facebook.stetho.dumpapp.DumpException; import java.util.LinkedHashMap; import java.util.List; public class DpiDumper implements InfoDumper { @Override public String getTitle() { return "DPI"; } @Override public LinkedHashMap<String, String> getDumpMap(Context context) throws DumpException { DisplayMetrics metrics = getDisplayMetrics(context); int dpi = getDpi(metrics); String dpiType = getDpiType(dpi); LinkedHashMap<String, String> dumps = new LinkedHashMap<>(); dumps.put("dpi", Integer.toString(dpi)); dumps.put("Generalized density", dpiType); dumps.put("widthPixels", Integer.toString(metrics.widthPixels)); dumps.put("heightPixels", Integer.toString(metrics.heightPixels)); return dumps; } @Override public List<String> getDumpList(Context context) throws DumpException { return null; } @Override public String getErrorMessage() { return null; } private DisplayMetrics getDisplayMetrics(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); android.view.Display display = wm.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); return metrics; } private int getDpi(DisplayMetrics metrics) { return metrics.densityDpi; } private String getDpiType(int dpi) { if (dpi <= 120) { return "ldpi"; } else if (dpi <= 160) { return "mdpi"; } else if (dpi <= 240) { return "hdpi"; } else if (dpi <= 320) { return "xhdpi"; } else if (dpi <= 480) { return "xxhdpi"; } else { return "xxxhdpi"; } } }