Как узнать dpi телефона

Что такое DPI экрана смартфона, и на что влияет этот показатель?

Возможности современных экранов позволяют комфортно справляться с любой повседневной задачей. В данное время дисплеи отличаются не только размером диагонали, но и огромным количеством других характеристик. Одна из них — плотность размещения пикселей (dpi)  встречается повсеместно. Рассказываем, что значит этот показатель, и зачем он нужен?

Что такое DPI экрана?

Параметр DPI (dots per inch) нужен для отображения количества точек, которое приходится на один линейный дюйм поверхности дисплея. К примеру, обозначение 326 dpi говорит о том, что разрешающая способность экрана равна 326 пикселям по вертикали и горизонтали в квадрате с габаритами 1 x 1 дюйм.

DPI

Этот параметр, как правило, пропорционален разрешению дисплея, отвечающему за максимальное число точек в рамках всей матрицы устройства. Как можно догадаться, смартфоны с большой диагональю должны задействовать оптимальные показатели разрешения и DPI. Устройства, обладающие крупным дисплеем и непропорционально низкой плотностью пикселей, имеют проблемы с качеством изображения (зернистость и пиксельность).

Картинка в таком случае выглядит нечеткой и размытой, поскольку пиксели должны растягиваться, чтобы занять весь экран телефона. Судя по некоторым исследованиям, человеческий глаз способен различать отдельные точки дисплея при DPI, который не превышает 350, а для комфортного просмотра достаточно показателя 250 DPI.

DPI экрана

Как узнать DPI экрана смартфона?

Когда пользователь скачивает новое приложение, система производит анализ параметров дисплея, установленного на телефоне. Это нужно, чтобы визуальный контент отображался корректно в зависимости от текущего разрешения и плотности пикселей. После того, как требуемые характеристики экрана будут определены, происходит загрузка и установка подходящей версии программы.

При установке ПО из сторонних источников владельцу смартфона в некоторых случаях нужно самостоятельно подбирать файл APK с нужным dpi. По этой причине иногда бывает полезно знать значение данного параметра на своем телефоне. Если текущая плотность пикселей неизвестна, исправить это можно при помощи специальной программы Display Info. После запуска утилиты найти информацию о DPI можно в строке «Density» (рядом с остальными сведениями об экране смартфона).

Display Info

Зная параметр DPI, нужно скачивать версии программ, которые обладает оптимальными настройками изображения. Выбирать следует файл, где DPI в имени или описании совпадает с тем, что показала утилита Display Info. Если такого варианта нет, можно установить версию с немного большей плотностью пикселей либо файл с пометкой «nodpi», который подстраивается под любой экран.

Можно ли изменить DPI?

Если версии ПО с подходящим DPI не существует, можно изменить данный параметр на самом устройстве. Как правило, большая часть из известных сегодня способов предполагает наличие root-доступа. Изменить значение DPI поможет бесплатная утилита Easy DPI Changer.

Также проделать данную операцию можно вручную. Для этого потребуется открыть файл build.prop в папке system, после чего изменить значение в строке ro.sf.lcd_density. После знака «=» здесь располагается текущий dpi. Сменив данное число на любое другое, нужно сохранить изменения в файле и выполнить перезагрузку устройства, чтобы новые параметры вступили в силу.

Если на смартфоне нет root-прав, настроить нужный DPI можно с помощью подключения смартфона к ПК и программы Adb Run. Для начала потребуется подключить телефон к компьютеру и перевести его в режим отладки. После этого в окне Adb Run нужно ввести команду adb shell wm density 480 (число в конце обозначает запрашиваемое значение DPI и может быть любым) и нажать клавишу Enter. Теперь остается перезагрузить телефон. Если нужно вернуть изначальное значение DPI, Необходимо ввести команду adb shell wm density reset и также выполнить перезапуск телефона.

Итоги

Значение DPI экрана означает плотность размещения пикселей на экране мобильного телефона. Этот показатель используется для определения наиболее оптимальных настроек изображения в программах для Android. В случае необходимости DPI можно редактировать при помощи специальных утилит.

Как узнать DPI (плотность пикселей) дисплея смартфона или планшетаПриветствую!

Производители смартфонов и планшетов устанавливают в свои творения дисплеи, имеющие различные параметры. Среди перечня параметров нельзя не отметить DPI – оный отвечает за то, сколь близко друг к другу находятся пиксели на дисплее. От этого параметра зависит, будет ли видна «зернистость» картинки, некоторая замыленность текста, т.к. шрифты будут отображаться недостаточно чётко.

И если одни владельцы смартфонов без особых сложностей воспринимают дисплеи, которые обладают низким DPI, то другие на них смотреть не могут, постоянно видя отдельные пиксели, которые так и «врезаются» в глаза при просмотре чего-либо на дисплее.

Image

Давайте рассмотрим, как выяснить конкретную цифру параметра плотности пикселя дисплея, что установлен в находящимся на руках гаджете: смартфоне или планшете.

Данный параметр недоступен из настроек системы, т.к. разработчики посчитали, что это излишняя информация. Однако эту информацию можно без труда извлечь и поможет нам в этом небезызвестное в широких кругах приложение AIDA64.

Image

Данное популярное приложение берёт своё начало ещё со времён, когда господствовали компьютеры, позволяя получить огромное количество информации о аппаратной и программной составляющей оного. Однако время не стоит на месте, теперь, когда смартфоны стали не менее популярны, разработчики выпустили вариант мобильного приложения, которое поможет выяснить «всю подноготную» мобильного гаджета.

  1. Первый шаг, который предстоит совершить, это установить данное приложение из сервиса Google Play, здесь всё весьма стандартно, описывать пошагово этот процесс было бы избыточно. Если вы хоть раз устанавливали приложение на смартфон или планшет, то с лёгкостью справитесь и с установкой AIDA64.
  2. На втором шаге мы имеем установленное приложение, которое необходимо запустить, нажав по соответствующей иконке. Высветится окно, в котором имеется некоторое количество пунктов – это категории, в которых представлена та или иная программно-аппаратная информация о гаджете. Нам необходима категория, имеющая говорящее название Отображение – выберите её.

    Пункт меню с технической информацией о дисплее

  3. И вот мы здесь, где можно подчеркнуть интересующую нас информацию. Если конкретизировать, то оная расположена в строке Плотность пикселов.

    Информация о плотности пикселей, которой обладает дисплей смартфона или планшета

    В приведённом примере этот параметр составляет 267 DPI, что не так много, но достаточно большинству, дабы не видеть злополучные квадратики при отображении информации на смартфоне или планшете.

Видеоинструкция

Image

Всё. Информация была получена, можно прощаться. До новых встреч в новых, полезных и интересных материалах!

Пожертвование сайту IT-Actual.ru (cбор пожертвований осуществляется через сервис «ЮMoney»)

На что пойдут пожертвования реквизиты других платёжных систем

Привет.

Не секрет, что в экономике ныне дела обстоят не лучшим образом, цены растут, а доходы падают. И данный сайт также переживает нелёгкие времена :-(
Если у тебя есть возможность и желание помочь развитию ресурса, то ты можешь перевести любую сумму (даже самую минимальную) через форму пожертвований, или на следующие реквизиты:

Номер банковской карты: 5331 5721 0220 5546
Кошелёк ЮMoney: 410015361853797
Кошелёк WebMoney: Z812646225287
PayPal: paypal@it-actual.ru
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93

Оказавшие помощь:
Сергей И. — 500руб
<аноним> — 468руб
<аноним> — 294руб
Мария М. — 300руб
Валерий С. — 420руб
<аноним> — 600руб
Полина В. — 240руб

Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru


Как изменить DPI на Андроид (инструкция)


Как изменить DPI на Андроид (инструкция). Возможно вам на форуме сказали «изменить DPI на Android» и теперь вы судорожно пытаетесь понять, что это и как и где это изменить. Наш сайт расскажет что такое DPI и как его изменить.

Все больше и больше людей покупают Android, и после сталкиваются с ситуациями когда в этой операционной системе нужно что-то настроить. В данной статье будет рассказано как изменить плотность дисплея или DPI.

Что такое DPI?

DPI — это плотность размещения пикселей (точек) на дюйм. То есть, предположим, у нас есть два смартфона, оба имеют разрешение экрана 1920X1080, но у первого размер дисплея 4.5 дюйма, а у другого, например 5.2 значит, первый смартфон имеет DPI выше, чем второй. 

Зачем изменять DPI?

Некоторые программы могут некорректно выглядеть с текущим DPI на вашем Android, для этого, чтобы исправить работу изменяют плотность экрана.

Как узнать свой DPI дисплея Android планшета или смартфона?

Чтобы узнать какой текущий DPI установлен на вашем планшете или смартфоне достаточно скачать специальное приложение Screen Resolution.

Как изменить DPI на Андроид (инструкция)

Как еще вариант, если у вас установлено приложение Root Browser,

Как изменить DPI на Андроид (инструкция)

найти файл build.prop в папке system и посмотреть значение строки:

ro.sf.lcd_density=

Как изменить DPI на Android?

Стоит изменять DPI с не большим шагом (10 — 20), так как резко изменив значение, могут возникнуть ошибки в работе операционной системы!

Для того чтобы у вас появилась возможность изменить DPI, вам в любом случае будут нужны root права:

  • Что такое Root?

Способ 1. Установка DPI без наличия Root прав Android

  1. Установите драйвера Android
  2. Установите программу ADB RUN
  3. Включите «Отладку По USB«
  4. Введите команду в окне ADB RUN

adb shell wm density XXX где XXX необходимое значение DPI(480, 320).

Если что-то пошло не так, не удается сбросить DPI или изменить на другое значение, то тогда введите команду:

adb shell wm density reset

Перезагрузите Android!

Вариант 2. С наличием root, при помощи приложения

Далее скачайте и установите приложение Textdroid DPI

Как изменить DPI на Андроид (инструкция)

Запустите установленное приложение измените на необходимое значение, нажмите после кнопки «Apply» и «Reboot» что изменения вступили в силу.

Как изменить DPI на Андроид (инструкция)

С новой загрузкой у вас будет применены новые настройки плотности экрана DPI.

Вариант 3. С наличием Root прав, путем правки файла buid.prop

Запустите приложение  Root Browser, найти файл build.prop в папке system и найдите параметр:

ro.sf.lcd_density=

Как изменить DPI на Андроид (инструкция)

Задайте собственный DPI, сохраните документ и перезагрузите Android.

Вот и все! Нет ничего сложного!



Ядра, гигагерцы, гигабайты мегапиксели – это стандартные термины для 21 века, которые слышал ну практически каждый. По отдельности они могут использоваться в самых разных отраслях, однако вместе встречаются только применительно к смартфонам. Но если раньше относящиеся к ним цифры было принято знать практически наизусть, то сегодня в этом практически нет никакого смысла. В конце концов, какая разница, на какой частоте работает процессор вашего смартфона, если он работает хорошо и не тормозит? Другое дело, что есть ещё показатели, которые лучше знать наизусть.

Что такое DPI в телефоне и на что это влияет. DPI и PPI — суть то же самое, но не совсем. Фото.

DPI и PPI — суть то же самое, но не совсем

Что такое ярлыки на Android, зачем они нужны и как ими пользоваться

Я говорю о DPI (dots per inch). В переводе на русский язык этот термин обозначает количество точек на дюйм. По своей сути он довольно близок к PPI (pixels per inch) – количеству пикселей на дюйм. И тот, и другой обозначают разрешающую способность. Но если PPI – это цифровой показатель, который демонстрирует, сколько пикселей может поместиться на каждый квадратный дюйм дисплея, то DPI – это, скорее, характеристика картинки, которой предстоит отображаться на каком-то экране.

Зачем нужен DPI

Зачем нужен DPI. Скачивая APK-файлы приложений, обращайте внимание на графу DPI. Фото.

Скачивая APK-файлы приложений, обращайте внимание на графу DPI

DPI играет большое значение для приложений. Некоторые разработчики изначально адаптируют свой софт под конкретную плотность точек на дюйм: 120, 160, 200, 300 и больше. Это значит, что приложению для работы требуется, чтобы экран смартфона обладал таким разрешением, чтобы его показатель PPI в точности совпадал с показателем DPI. От этого зависит, будет ли приложение работать на устройстве или не будет. Это важно знать, когда вы скачиваете приложения в виде APK-файлов на альтернативных Google Play площадках.

По факту, DPI – это показатель как бы графического объёма, который предстоит занять изображению, а PPI – это показатель как бы графической ёмкости, которой это изображение предстоит вместить.

На сайтах вроде APKPure и APKMirror, которые являются самыми популярными источниками софта из числа альтернативных, на странице каждого приложения разделе с характеристиками есть отдельная графа DPI. Чаще всего встречается обозначение nodpi, которое обозначает, что у приложения нет конкретных требований к вмещающей способности дисплея. Но иногда попадаются вполне конкретные цифры, и они обозначают, что разрешение дисплея должно давать плотность пикселей, равную заявленной разработчиком плотности точек.

Не устанавливается APK на Android

Я больше чем уверен, что большинство пользователей даже понятия не имеют, какой показатель PPI (DPI) имеет экран их смартфона. Это я сужу по себе. Нет, я знаю, какое разрешение у моего аппарата, но вот какую оно даёт плотность пикселей на выходе, даже не представляю. К счастью, высчитывать его самостоятельно, тем более что это довольно сложно, поскольку дисплеи современных устройств зачастую имеют форму не строгих прямоугольников, необходимости нет.

Как проверить DPI телефона

Для этой цели существует специальное приложение DPI Checker. Вот как оно работает:

  • Скачайте приложение DPI Checker из Google Play;
  • Запустите его и примите пользовательское соглашение;

Как проверить DPI телефона. DPI Checker — приложение, которое измеряет показатели DPI вашего смартфона. Фото.

DPI Checker — приложение, которое измеряет показатели DPI вашего смартфона

  • На главной странице нажмите розовую кнопку измерения;
  • Сравните полученный результат с требованиями APK-файла.

Как играть в Cyberpunk 2077 на Android бесплатно

В моём случае, как видите, показатель DPI равен 480 точкам. Это стандарт для большинства смартфонов с диагональю дисплея 6,5 дюймов и разрешением Full HD+. То есть он ничем не отличается от любого другого аппарата со схожими характеристиками, а значит, должен поддерживать подавляющее большинство приложений. Если же показатель DPI вашего смартфона не соответствует требованиям приложения, выберите альтернативную версию apk, либо скачайте программу из Google Play – он сам подберёт нужную версию.

Возможно вам сказали на форуме «изменить DPI на Android» и теперь вы судорожно пытаетесь понять, что это и как, а также, где это изменить? Сайт Android +1 расскажет что такое DPI и как его изменить с помощью трех способов.

Все больше и больше людей покупают Android, и после сталкиваются с ситуациями когда в этой операционной системе нужно что-то настроить. В данной статье будет рассказано как изменить плотность дисплея или DPI.

DPI — это плотность размещения пикселей (точек) на дюйм. То есть, предположим, у нас есть два смартфона, оба имеют разрешение экрана 1920X1080, но у первого размер дисплея 4.5 дюйма, а у другого, например 5.2 значит, первый смартфон имеет DPI выше, чем второй. 

Зачем изменять DPI?

Некоторые программы могут некорректно выглядеть с текущим DPI на вашем Android, для этого, чтобы исправить работу, изменяют плотность экрана.

Как узнать DPI телефона Android
и как узнать как узнать разрешение экрана?

Чтобы узнать какой текущий DPI установлен на вашем планшете или смартфоне, достаточно скачать специальное приложение с магазина Google Play — Screen Resolution.

изменить DPI на Android

Как еще вариант, если у вас установлено приложение Root Browser,

изменить DPI на Android

найти файл build.prop в папке system и посмотреть значение строки:

ro.sf.lcd_density=

Как изменить DPI на Android?

Стоит изменять DPI с не большим шагом (10 — 20), так как резко изменив значение, могут возникнуть ошибки в работе операционной системы!

Для того чтобы у вас появилась возможность изменить DPI, вам в любом случае будут нужны root права (кроме первого способа):

  • Что такое Root?
  • Список моделей на которых уже есть Root
  • Лучшие программы для получения Root

Способ 1. Установка DPI без наличия Root прав Android

  1. Установите драйвера Android
  2. Установите программу ADB
  3. Включите «Отладку По USB«
  4. Введите команду в окне ADB
    adb shell wm density XXX где XXX необходимое значение DPI(480, 320).
    изменить DPI на Android

Если что-то пошло не так, не удается сбросить DPI или изменить на другое значение, то тогда введите команду:

adb shell wm density reset
Перезагрузите Android!

Способ 2. С наличием root, при помощи приложения

Скачайте и установите приложение Textdroid DPIизменить DPI на Android

Запустите установленное приложение и измените на необходимое значение. Далее нажмите на кнопки «Apply» и «Reboot» чтобы изменения вступили в силу.изменить DPI на AndroidС новой загрузкой у вас будет применены новые настройки плотности экрана DPI.

Способ 3. С наличием Root прав, путем правки файла buid.prop

Запустите приложение  Root Browser, найти файл build.prop в папке system и найдите параметр:

ro.sf.lcd_density=изменить DPI на Android

Задайте собственный DPI, сохраните документ и перезагрузите Android.

Как изменить разрешение на Android?

  1. Установите драйвера Android
  2. Установите программу ADB
  3. Включите «Отладку По USB«
  4. Введите команду в окне ADB
    adb shell wm size YYYYxZZZZ где YYYYxZZZZ необходимое значение разрешение (1920×1080).

Вот и все! Нет ничего сложного! Больше разных статей и инструкций читайте в разделе Статьи и Хаки Android. Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней!

Большинству более или менее опытных пользователей Android устройств хорошо известно, что устанавливать игры и приложения на них можно не только из онлайн магазина Google Play Маркет, но и из APK файлов, которые можно скачать с различных ресурсов.

Android — советы и подсказки. Как узнать DPI вашего смартфона или планшета для скачивания подходящих версий APK файлов для них

Однако, зачастую они испытывают затруднения в том, чтобы скачать правильный APK файл для смартфона или планшета, оптимизированный под размер и разрешение его экрана или — плотность упаковки пикселей, которая обозначается аббревиатурой DPI. Сегодня я хочу поделиться с вами одним из способом, позволяющим узнать значение DPI дисплея вашего Android устройства.

Сделать это очень и очень просто.

Прежде всего вам нужно будет установить на свой смартфон или планшет бесплатное приложение Display Info от разработчика Stefano Sanna, которое доступно для скачивание с этой страницы Google Play Маркет.

После запуска Display Info отобразит информацию о параметрах дисплея вашего Android устройства (скриншот ниже, слева). Как вы уже поняли, нам потребуется значение DPI, которое отображается в строке «Density».

Теперь зная значение DPI экрана вашего смартфона или планшета, вы можете скачать подходящий вам вариант APK файла. Для этого вам нужно выбрать файл в описании которого DPI равно или выше (ближайшее значение) DPI полученного от приложения Display Info. Пример вы видите ниже:

Android — советы и подсказки. Как узнать DPI вашего смартфона или планшета для скачивания подходящих версий APK файлов для них

Помимо этого, в отдельных случаях, если никакой из имеющихся вариантов вам не подходит, вы можете выбрать APK файл с пометкой «nodpi», который должен быть совместим с любым разрешением дисплея.


Похожие материалы:

Клавиатура Gboard для Android v6.1 со встроенным переводчиком и новыми темами [Скачать APK] 

Советы Android. Закругленные края экрана Android смартфона или планшета можно получить с помощью приложения Cornerfly 

Android: советы и подсказки. Как спрятать экранные кнопки навигации на AMOLED дисплеях смартфонов Google Pixel и Pixel XL (Root) 

Скачать APK файлы приложений из Google Play Маркет можно с помощью расширения Toolbox for Google Play Store для браузера Chrome 

How to get the screen density programmatically in android?

I mean: How to find the screen dpi of the current device?

Ωmega's user avatar

Ωmega

41.5k33 gold badges128 silver badges196 bronze badges

asked Jul 2, 2010 at 14:17

Praveen's user avatar

2

You can get info on the display from the DisplayMetrics struct:

DisplayMetrics metrics = getResources().getDisplayMetrics();

Though Android doesn’t use a direct pixel mapping, it uses a handful of quantized Density Independent Pixel values then scales to the actual screen size. So the metrics.densityDpi property will be one of the DENSITY_xxx constants (120, 160, 213, 240, 320, 480 or 640 dpi).

If you need the actual lcd pixel density (perhaps for an OpenGL app) you can get it from the metrics.xdpi and metrics.ydpi properties for horizontal and vertical density respectively.

If you are targeting API Levels earlier than 4. The metrics.density property is a floating point scaling factor from the reference density (160dpi). The same value now provided by metrics.densityDpi can be calculated

int densityDpi = (int)(metrics.density * 160f);

Ωmega's user avatar

Ωmega

41.5k33 gold badges128 silver badges196 bronze badges

answered Jul 2, 2010 at 14:26

joshperry's user avatar

joshperryjoshperry

40.4k16 gold badges86 silver badges103 bronze badges

9

This also works:

 getResources().getDisplayMetrics().density;

This will give you:

0.75 — ldpi

1.0 — mdpi

1.5 — hdpi

2.0 — xhdpi

3.0 — xxhdpi

4.0 — xxxhdpi

enter image description here

ref: density

enter image description here

ref 2

answered Jun 8, 2012 at 11:32

Blundell's user avatar

BlundellBlundell

74.3k30 gold badges208 silver badges232 bronze badges

10

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

switch(metrics.densityDpi) {
     case DisplayMetrics.DENSITY_LOW:
         break;

     case DisplayMetrics.DENSITY_MEDIUM:
         break;

     case DisplayMetrics.DENSITY_HIGH:
         break;
}

This will work on API level 4 and higher.

K Neeraj Lal's user avatar

K Neeraj Lal

6,7283 gold badges23 silver badges33 bronze badges

answered Mar 16, 2011 at 9:44

Mitul Nakum's user avatar

Mitul NakumMitul Nakum

5,4655 gold badges33 silver badges41 bronze badges

4

Blundell’s answer as a static helper method:

private static String getDensityName(Context context) {
    float density = context.getResources().getDisplayMetrics().density;
    if (density >= 4.0) {
        return "xxxhdpi";
    }
    if (density >= 3.0) {
        return "xxhdpi";
    }
    if (density >= 2.0) {
        return "xhdpi";
    }
    if (density >= 1.5) {
        return "hdpi";
    }
    if (density >= 1.0) {
        return "mdpi";
    }
    return "ldpi";
}

Community's user avatar

answered Oct 8, 2013 at 19:07

qwertzguy's user avatar

qwertzguyqwertzguy

14.4k9 gold badges63 silver badges64 bronze badges

9

Here are some density constants, source:

enter image description here

There are, in addition to the standard densities, 5 Intermediate ones. Taking into account this fact, the following code will be a complete working example:

float density = getResources().getDisplayMetrics().density;

if (density == 0.75f)
{
    // LDPI
}
else if (density >= 1.0f && density < 1.5f)
{
    // MDPI
}
else if (density == 1.5f)
{
    // HDPI
}
else if (density > 1.5f && density <= 2.0f)
{
    // XHDPI
}
else if (density > 2.0f && density <= 3.0f)
{
    // XXHDPI
}
else
{
    // XXXHDPI 
}

Alternatively, you can find density constants using the densityDpi:

int densityDpi = getResources().getDisplayMetrics().densityDpi;

switch (densityDpi)
{
    case DisplayMetrics.DENSITY_LOW:
        // LDPI
        break;

    case DisplayMetrics.DENSITY_MEDIUM:
        // MDPI
        break;

    case DisplayMetrics.DENSITY_TV:
    case DisplayMetrics.DENSITY_HIGH:
        // HDPI
        break;

    case DisplayMetrics.DENSITY_XHIGH:
    case DisplayMetrics.DENSITY_280:
        // XHDPI
        break;

    case DisplayMetrics.DENSITY_XXHIGH:
    case DisplayMetrics.DENSITY_360:
    case DisplayMetrics.DENSITY_400:
    case DisplayMetrics.DENSITY_420:
        // XXHDPI
        break;

    case DisplayMetrics.DENSITY_XXXHIGH:
    case DisplayMetrics.DENSITY_560:
        // XXXHDPI
        break;
}

answered Oct 27, 2015 at 14:00

Ayaz Alifov's user avatar

Ayaz AlifovAyaz Alifov

8,0444 gold badges60 silver badges54 bronze badges

Try this:

DisplayMetrics dm = context.getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;

answered Oct 2, 2011 at 15:09

Wizist's user avatar

WizistWizist

5534 silver badges5 bronze badges

2

To get dpi:

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

// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
int dpiClassification = dm.densityDpi;

// these will return the actual dpi horizontally and vertically
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;

answered Jul 2, 2010 at 14:26

Jere.Jones's user avatar

Jere.JonesJere.Jones

9,7855 gold badges35 silver badges38 bronze badges

2

The following answer is a small improvement based upon qwertzguy’s answer.

double density = getResources().getDisplayMetrics().density;
if (density >= 4.0) {
   //"xxxhdpi";
}
else if (density >= 3.0 && density < 4.0) {
   //xxhdpi
}
else if (density >= 2.0) {
   //xhdpi
}
else if (density >= 1.5 && density < 2.0) {
   //hdpi
}
else if (density >= 1.0 && density < 1.5) {
   //mdpi
}

answered Jun 24, 2014 at 11:42

San's user avatar

SanSan

2,1331 gold badge23 silver badges40 bronze badges

4

Actualy if you want to have the real display dpi the answer is somewhere in between
if you query for display metrics:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;

densityDpi * 160 will give you the values/suggestion which density you should use

0.75 - ldpi - 120 dpi
1.0 - mdpi - 160 dpi
1.5 - hdpi - 240 dpi
2.0 - xhdpi - 320 dpi
3.0 - xxhdpi - 480 dpi
4.0 - xxxhdpi - 640 dpi

as specified in previous posts

but dm.xdpi won’t give you always the REAL dpi of given display:
Example:

Device: Sony ericsson xperia mini pro (SK17i)
Density: 1.0 (e.g. suggests you use 160dpi resources)
xdpi: 193.5238
Real device ppi is arround 193ppi


Device: samsung GT-I8160 (Samsung ace 2)
Density 1.5 (e.g. suggests you use 240dpi resources)
xdpi 160.42105
Real device ppi is arround 246ppi

so maybe real dpi of the display should be Density*xdpi .. but i’m not sure if this is the correct way to do!

cyborg86pl's user avatar

cyborg86pl

2,5982 gold badges26 silver badges43 bronze badges

answered Oct 17, 2013 at 12:08

Marek Halmo's user avatar

Marek HalmoMarek Halmo

2,1712 gold badges15 silver badges18 bronze badges

2

This should help on your activity …

void printSecreenInfo(){

    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);

    Log.i(TAG, "density :" +  metrics.density);

    // density interms of dpi
    Log.i(TAG, "D density :" +  metrics.densityDpi);

    // horizontal pixel resolution
    Log.i(TAG, "width pix :" +  metrics.widthPixels);

     // actual horizontal dpi
    Log.i(TAG, "xdpi :" +  metrics.xdpi);

    // actual vertical dpi
    Log.i(TAG, "ydpi :" +  metrics.ydpi);

}

OUTPUT :

I/test( 1044): density :1.0

I/test( 1044): D density :160

I/test( 1044): width pix :800

I/test( 1044): xdpi :160.0

I/test( 1044): ydpi :160.42105

j0k's user avatar

j0k

22.4k28 gold badges80 silver badges88 bronze badges

answered Dec 10, 2012 at 13:40

prabhu's user avatar

prabhuprabhu

3012 silver badges6 bronze badges

public static String getDensity(Context context) {
    String r;
    DisplayMetrics metrics = new DisplayMetrics();

    if (!(context instanceof Activity)) {
        r = "hdpi";
    } else {
        Activity activity = (Activity) context;
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        if (metrics.densityDpi <= DisplayMetrics.DENSITY_LOW) {
            r = "ldpi";
        } else if (metrics.densityDpi <= DisplayMetrics.DENSITY_MEDIUM) {
            r = "mdpi";
        } else {
            r = "hdpi";
        }
    }

    return r;
}

answered Feb 29, 2012 at 0:33

Felipe's user avatar

FelipeFelipe

16.4k11 gold badges67 silver badges92 bronze badges

If you want to retrieve the density from a Service it works like this:

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);

answered Apr 23, 2012 at 9:00

Display name's user avatar

Display nameDisplay name

2,6751 gold badge28 silver badges49 bronze badges

1

You Should Try This. Just Added a Method which will find and Show the Toast. That in Which Category the Device Falls.

public static int differentDensityAndScreenSize(Context context) {
  int value = 20;
  String str = "";
  if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "small-ldpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "small-mdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "small-hdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "small-xhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "small-xxhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "small-xxxhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "small-tvdpi";
    value = 20;
    break;
   default:
    str = "small-unknown";
    value = 20;
    break;
   }

  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "normal-ldpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "normal-mdpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "normal-hdpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "normal-xhdpi";
    value = 90;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "normal-xxhdpi";
    value = 96;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "normal-xxxhdpi";
    value = 96;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "normal-tvdpi";
    value = 96;
    break;
   default:
    str = "normal-unknown";
    value = 82;
    break;
   }
  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "large-ldpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "large-mdpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "large-hdpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "large-xhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "large-xxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "large-xxxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "large-tvdpi";
    value = 125;
    break;
   default:
    str = "large-unknown";
    value = 78;
    break;
   }

  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "xlarge-ldpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "xlarge-mdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "xlarge-hdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "xlarge-xhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "xlarge-xxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "xlarge-xxxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "xlarge-tvdpi";
    value = 125;
    break;
   default:
    str = "xlarge-unknown";
    value = 125;
    break;
   }
  }
// The Toast will show the Device falls in Which Categories.
Toast.makeText(MainActivity.this, ""+str, Toast.LENGTH_SHORT).show();

  return value;
 }

http://www.androidwarriors.com/2016/01/how-to-find-different-devices-screen.html

answered Jan 26, 2016 at 4:05

Avinash Verma's user avatar

Avinash VermaAvinash Verma

2,4321 gold badge16 silver badges22 bronze badges

This should work.

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; //320
int height = dm.heightPixels; //480

answered Jul 2, 2010 at 14:22

Robby Pond's user avatar

Robby PondRobby Pond

72.7k16 gold badges124 silver badges119 bronze badges

2

Yet another answer:

/**
* @return "ldpi", "mdpi", "hdpi", "xhdpi", "xhdpi", "xxhdpi", "xxxhdpi", "tvdpi", or "unknown".
*/
public static String getDensityBucket(Resources resources) {
    switch (resources.getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            return "ldpi";
        case DisplayMetrics.DENSITY_MEDIUM:
            return "mdpi";
        case DisplayMetrics.DENSITY_HIGH:
            return "hdpi";
        case DisplayMetrics.DENSITY_XHIGH:
            return "xhdpi";
        case DisplayMetrics.DENSITY_XXHIGH:
            return "xxhdpi";
        case DisplayMetrics.DENSITY_XXXHIGH:
            return "xxxhdpi";
        case DisplayMetrics.DENSITY_TV:
            return "tvdpi";
        default:
            return "unknown";
    }
}

answered Oct 9, 2015 at 0:23

Jared Rummler's user avatar

Jared RummlerJared Rummler

37.4k19 gold badges134 silver badges147 bronze badges

Try this…

In kotlin

fun determineScreenDensityCode(): String {
      return when (resources.displayMetrics.densityDpi) {
         DisplayMetrics.DENSITY_LOW -> "ldpi"
         DisplayMetrics.DENSITY_MEDIUM -> "mdpi"
         DisplayMetrics.DENSITY_HIGH -> "hdpi"
         DisplayMetrics.DENSITY_XHIGH, DisplayMetrics.DENSITY_280 -> "xhdpi"
         DisplayMetrics.DENSITY_XXHIGH, DisplayMetrics.DENSITY_360, DisplayMetrics.DENSITY_400, DisplayMetrics.DENSITY_420 -> "xxhdpi"
         DisplayMetrics.DENSITY_XXXHIGH, DisplayMetrics.DENSITY_560 -> "xxxhdpi"
         else -> "Unknown code ${resources.displayMetrics.densityDpi}"
     }
}

You can call by println("density: ${determineScreenDensityCode()}")
and the output will be System.out: density: xxxhdpi

answered Aug 22, 2018 at 7:32

Silambarasan Poonguti's user avatar

Another way to get the density loaded by the device:

Create values folders for each density

  • values (default mdpi)
  • values-hdpi
  • values-xhdpi
  • values-xxhdpi
  • values-xxxhdpi

Add a string resource in their respective strings.xml:

<string name="screen_density">MDPI</string>    <!-- ..resvaluesstrings.xml -->
<string name="screen_density">HDPI</string>    <!-- ..resvalues-hdpistrings.xml -->
<string name="screen_density">XHDPI</string>   <!-- ..resvalues-xhdpistrings.xml -->
<string name="screen_density">XXHDPI</string>  <!-- ..resvalues-xxhdpistrings.xml -->
<string name="screen_density">XXXHDPI</string> <!-- ..resvalues-xxxhdpistrings.xml -->

Then simply get the string resource, and you have your density:

String screenDensity = getResources().getString(R.string.screen_density);

If the density is larger than XXXHDPI, it will default to XXXHDPI or if it is lower than HDPI it will default to MDPI

R.strings.screen_density values

I left out LDPI, because for my use case it isn’t necessary.

answered Nov 20, 2019 at 6:50

Pierre's user avatar

PierrePierre

8,0274 gold badges62 silver badges79 bronze badges

1

In Android you can get the screen density like this:

public static String getScreenDensity(Context context)
{
    String density;
    switch (context.getResources().getDisplayMetrics().densityDpi)
    {
        case DisplayMetrics.DENSITY_LOW:
            density = "LDPI";
            break;
        case DisplayMetrics.DENSITY_140:
            density = "LDPI - MDPI";
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            density = "MDPI";
            break;
        case DisplayMetrics.DENSITY_180:
        case DisplayMetrics.DENSITY_200:
        case DisplayMetrics.DENSITY_220:
            density = "MDPI - HDPI";
            break;
        case DisplayMetrics.DENSITY_HIGH:
            density = "HDPI";
            break;
        case DisplayMetrics.DENSITY_260:
        case DisplayMetrics.DENSITY_280:
        case DisplayMetrics.DENSITY_300:
            density = "HDPI - XHDPI";
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            density = "XHDPI";
            break;
        case DisplayMetrics.DENSITY_340:
        case DisplayMetrics.DENSITY_360:
        case DisplayMetrics.DENSITY_400:
        case DisplayMetrics.DENSITY_420:
        case DisplayMetrics.DENSITY_440:
            density = "XHDPI - XXHDPI";
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            density = "XXHDPI";
            break;
        case DisplayMetrics.DENSITY_560:
        case DisplayMetrics.DENSITY_600:
            density = "XXHDPI - XXXHDPI";
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            density = "XXXHDPI";
            break;
        case DisplayMetrics.DENSITY_TV:
            density = "TVDPI";
            break;
        default:
            density = "UNKNOWN";
            break;
    }

    return density;
}

And in Kotlin like this:

fun getScreenDensity(context: Context): String {
    val density: String
    when (context.resources.displayMetrics.densityDpi) {
        DisplayMetrics.DENSITY_LOW -> density = "LDPI"
        DisplayMetrics.DENSITY_140 -> density = "LDPI - MDPI"
        DisplayMetrics.DENSITY_MEDIUM -> density = "MDPI"
        DisplayMetrics.DENSITY_180, DisplayMetrics.DENSITY_200, DisplayMetrics.DENSITY_220 -> density = "MDPI - HDPI"
        DisplayMetrics.DENSITY_HIGH -> density = "HDPI"
        DisplayMetrics.DENSITY_260, DisplayMetrics.DENSITY_280, DisplayMetrics.DENSITY_300 -> density = "HDPI - XHDPI"
        DisplayMetrics.DENSITY_XHIGH -> density = "XHDPI"
        DisplayMetrics.DENSITY_340, DisplayMetrics.DENSITY_360, DisplayMetrics.DENSITY_400, DisplayMetrics.DENSITY_420, DisplayMetrics.DENSITY_440 -> density =
            "XHDPI - XXHDPI"
        DisplayMetrics.DENSITY_XXHIGH -> density = "XXHDPI"
        DisplayMetrics.DENSITY_560, DisplayMetrics.DENSITY_600 -> density = "XXHDPI - XXXHDPI"
        DisplayMetrics.DENSITY_XXXHIGH -> density = "XXXHDPI"
        DisplayMetrics.DENSITY_TV -> density = "TVDPI"
        else -> density = "UNKNOWN"
    }

    return density
}

Make sure to regularly check if new densities are added.

answered Feb 18, 2020 at 6:56

Wirling's user avatar

WirlingWirling

4,5602 gold badges46 silver badges74 bronze badges

I am using following code to access DPI from modules (no need for having access to a context object):

(Resources.getSystem().getDisplayMetrics().xdpi
Resources.getSystem().getDisplayMetrics().ydpi)/2

answered Aug 8, 2019 at 9:17

Jan Málek's user avatar

Jan MálekJan Málek

5138 silver badges21 bronze badges

Kotlin

LocalContext.current.resources.displayMetrics.density

To get the density multiplier.

answered Sep 5, 2022 at 8:45

Clément Cardonnel's user avatar

  • Как узнать apple id по номеру
  • Как узнай чей номер телефона
  • Как узнай свой номер на мегафон
  • Как узнай свой номер на билайн
  • Как удовлетворить мужчину по телефону