Рассчитать PPI устройства Android

Как рассчитать PPI для Android-устройства. В частности, Android Tablets. Обратите внимание, что я хочу рассчитать PPI устройства, а не DPI.

Ответ 1

Это легко, как один-два-три =) Пусть, например, caculate PPI для Nexus 5.

float LCD_Diagonal = 4.95f;
int screenHeightPx = 1920;
int screenWidthPx  = 1080;
float PPI = (float)Math.sqrt((double)(screenWidthPx*screenWidthPx + screenHeightPx*screenHeightPx))/LCD_Diagonal;
Log.e(TAG, "display_page_screen_ppi: " + String.format(Locale.getDefault(),"%d %s", Math.round(diagonal_density), "ppi"));

В результате мы имеем 445 ppi, что true в соответствии с спецификациями.

Ответ 2

PPI

Плотность экрана обозначается как Pixels In Inch, PPI, и количество пикселей, которые вписываются в дюйм. Чем выше число, тем более резкие изображения выглядят на дисплее, поэтому потребители считают, что высокий показатель PPI является преимуществом при покупке устройства. Иногда цифра цитируется как Dots Per Inch, DPI, хотя использование DPI запутывает, поскольку оно исходит из терминологии печати, и оно может относиться к чувствительности датчиков в цифровых сканерах и цифровых камерах. Для экранов Android, когда дело доходит до PPI и DPI, используйте PPI и оставляйте DPI для обозначения принтеров, где это действительно другое измерение (потому что точки, необходимые для создания высококачественных изображений на бумаге, имеют большую плотность).

Показатель PPI для экрана может быть рассчитан с учетом разрешения (количество пикселей x и y) и размера (диагональное измерение видимой области) экрана. Используйте теорему Пифагора для вычисления количества пикселей в диагонали, а затем разделите результат на размер экрана. т.е. PPI = (квадратный корень из x ^ 2 + y ^ 2)/размер экрана

Второй вариант

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

 // Display device width and height in pixels
     screenHeightpx = dm.heightPixels;
     screenWidthpx  = dm.widthPixels;

Ответ 3

Для этого вам нужно взять diaplaymatrix.

DisplayMetrics dm = getResources().getDisplayMetrics();
int height = dm.heightPixels;
int width = dm.widthPixels;