Вы можете получить информацию на дисплее из структуры DisplayMetrics :
DisplayMetrics metrics = getResources().getDisplayMetrics();
Хотя Android не использует прямое сопоставление пикселей, он использует несколько квантованных значений, независимых от плотности пикселей, а затем масштабируется до фактического размера экрана. Таким образом, metrics.densityDpi
свойство будет одним из DENSITY_xxx
констант ( 120
, 160
, 213
, 240
, 320
, 480
или 640
точек на дюйм).
Если вам нужна фактическая плотность ОК - пиксельный (возможно для приложения OpenGL) , вы можете получить его от metrics.xdpi
и metrics.ydpi
свойств для горизонтальной и вертикальной плотности соответственно.
Если вы ориентируетесь API уровней раньше , чем 4. metrics.density
Свойство с плавающей точкой коэффициент масштабирования от исходной плотности (160dpi). То же значение, предоставленное теперь, metrics.densityDpi
может быть рассчитано
int densityDpi = (int)(metrics.density * 160f);
getDisplayMetrics().xdpi
, которые должны возвращать реальное dpi устройства. Обратите внимание, что это значение не всегда корректно устанавливается на разных устройствах изготовителями, поэтому вы просто не сможете их использовать . Печально, но факт: информация о реальных точках на дюйм недоступна . Источник: groups.google.com/d/msg/android-developers/g56jV0Hora0/…