Is there a way to determine android physical screen height in cm or inches?
Use the following:
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); double x = Math.pow(mWidthPixels/dm.xdpi,2); double y = Math.pow(mHeightPixels/dm.ydpi,2); double screenInches = Math.sqrt(x+y); Log.d("debug","Screen inches : " + screenInches);
When mWidthPixels and mHeightPixels are taken from below code
private void setRealDeviceSizeInPixels(){ WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics = new DisplayMetrics(); display.getMetrics(displayMetrics); // since SDK_INT = 1; mWidthPixels = displayMetrics.widthPixels; mHeightPixels = displayMetrics.heightPixels; // includes window decorations (statusbar bar/menu bar) if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17) { try { mWidthPixels = (Integer) Display.class.getMethod("getRawWidth").invoke(display); mHeightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display); } catch (Exception ignored) { } } // includes window decorations (statusbar bar/menu bar) if (Build.VERSION.SDK_INT >= 17) { try { Point realSize = new Point(); Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize); mWidthPixels = realSize.x; mHeightPixels = realSize.y; } catch (Exception ignored) { } }
See this post for reference:Get screen dimensions in pixels
for getting the current size use Math.round at the end.
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); double x = Math.pow(dm.widthPixels/dm.xdpi,2); double y = Math.pow(dm.heightPixels/dm.ydpi,2); double screenInches = Math.sqrt(x+y); Log.d("debug","Screen inches : " + screenInches);screenInches= (double)Math.round(screenInches * 10) / 10;
android developers screen info.
use xdpi * widthPixels
and ydpi * heightPixels
might get you what you want i think.