在低api设备中获得真正的DPI

时间:2015-01-15 09:15:15

标签: android dpi android-screen

我使用以下代码获取x和y轴的dpi:

DisplayMetrics metrics = new DisplayMetrics();

try
{//API > = 17
    getWindowManager().getDefaultDisplay().getRealMetrics(metrics);

}catch(NoSuchMethodError e)
{//API < 17
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
}

float dpix = metrics.xdpi;
float dpiy = metrics.ydpi;

在API&gt; = 17台设备我得到了真正的dpi屏幕。效果很好。

在API&lt; 17设备中,大约50%的情况(仅使用6个物理设备进行测试),我得到了正确的值。

这些是API&lt;的失败的例子。 17:

Samsung SGH-T599N: (xdpi+ydpi)/2 : 160.0 | Real device dpi: ~107 (ERR)    
Motorola DROID RAZR: (xdpi+ydpi)/2 : 366.5 | Real device dpi: ~256 (ERR) 
Samsung GT-S5570I : (xdpi+ydpi)/2 : 25.0 | Real device dpi: ~120 (ERR)   
Philips W536 : (xdpi+ydpi)/2 : 235.0 | Real device dpi: ~233 (OK)    
Acer    A1-830 : (xdpi+ydpi)/2 : 163.0 | Real device dpi: ~162 (OK)

如何获得正确的dpi API&lt; 17?

0 个答案:

没有答案