Я пытаюсь вычислить диагональ устройства Android, но получаю неправильные результаты.
Я пишу:
fun getScreenInches(displayMetrics: DisplayMetrics): Float {
return hypot( displayMetrics.widthPixels / displayMetrics.xdpi, displayMetrics.heightPixels * displayMetrics.ydpi)
}
Прежде чем я получу метрики:
private fun Activity.getMetrics() = DisplayMetrics().apply {
windowManager.defaultDisplay.getRealMetrics(this)
}
И я называю getScreenInches()
таким образом:
getScreenInches(activity.getMetrics())
Проблема в том, что мой результат больше, чем я ожидал.
Я получаю ~ 8,5 дюйма для 7-дюймового устройства и ~ 9,5 дюйма для 8-дюймового устройства.
Я отладил свой код, и я понял, что displayMetrics.widthPixels
и displayMetrics.heightPixels
полностью правильно .
Так что я не уверен displayMetrics.xdpi
и displayMetrics.ydpi
. Похоже, что эти значения приближены к некоторым табличным значениям и не показывают реальную плотность.
Что мне делать или читать, чтобы моя функция возвращала правильные результаты?