2016-05-17 23 views
0

我已经创建了一个函数来根据分辨率和像素密度计算对角线屏幕尺寸。 viz-设备的物理密度和物理密度之间的差异究竟是什么?

def find_display_size(d): 

    width=float(720); 
    height=float(1280); 
    dens=float(294); 
    wi=float(width)/(dens); 
    hi=float(height)/(dens); 
    x = math.pow(wi,2); 
    y = math.pow(hi,2); 
    screenInches = math.sqrt(x+y); 
    diagScreenSizeRoundedoff = round(screenInches) 
    logger.info("screenInches "+str(screenInches),also_console=True) 
    logger.info("diagScreenSizeRoundedoff"+str(diagScreenSizeRoundedoff),also_console=True) 

我想用ADB shell来获取信息(分辨率&像素密度)。 当我试图我正在此命令 -

$adb shell wm density 

Result- 
Physical density: 320 

结果是一个设备(= 320)的物理密度,然而,特定装置的像素密度(〜294)。很想知道这两者之间究竟有什么区别,以及我如何使用adb命令来查找像素密度,在这种情况下,该命令大约是294。

的PS我的是 - MOTO XT1068

+0

我不相信有一种方法可以持续获得实际的物理密度。请参阅评论:http://stackoverflow.com/questions/2193457/is-there-a-way-to-determine-android-physical-screen-height-in-cm-or-inches –

+0

实际上有一种方法。点击此处查看 - http://kingscalculator.com/en/other-calculators/pixel-density-calculator。但在我的情况下,我需要计算,对角线屏幕大小,这反过来又需要像素密度。 –

回答

1

Android是您的设备安装在组MDPI,华电国际,xhdpi等,它们有固定的密度设置的一个工作的设备。例如具有290-340dpi的设备将使用320值,xxhdpi将为480,mdpi仅为160.该密度用于从资源中提取数据(维度,用于计算xml drawables,调整大小时仅在xxhdpi文件夹中绘制,但设备为mdpi等)更多的密度和在HERE

屏幕密度

屏幕的物理区域内的像素的数量的话题;通常称为dpi(每英寸点数)。例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内具有更少的像素。

为了简单起见,Android将所有实际屏幕密度分为六个广义密度:低,中,高,超高,超高和超高。

+0

这是正确的,我也知道这些约定,但仍然没有回答我的问题(物理密度与像素密度有什么不同,我如何才能找到基于分辨率的设备的像素密度密度设备) –

+0

像素是物理单位,所以我假设像素密度=物理密度。如果你的意思是在例子320中提到的密度是物理的(adb告诉你......) - 它不是。该值由系统使用匹配密度组文件夹设置。 294你已经计算出物理和像素在同一时间,320为操作系统使用分组价值 – snachmsm

+0

有道理,但有什么办法找到使用adb命令的设备的确切像素密度,因为我们能够得到所有该设备的属性通过说'get-prop',但它没有提及任何有关像素密度的内容。 –