我使用以下代码获取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?