2013-10-03 103 views
0

我正在努力获取设备显示对角线长度。我用公式,对角线=宽*宽+高*高。为了达到这个我使用下面的代码。在各种android设备中显示对角线尺寸冲突

DisplayInfo aDisplayInfo = new DisplayInfo(); 
    DecimalFormat twoDecimalForm = new DecimalFormat("#.##"); 

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

    aDisplayInfo.widthInch = (dm.widthPixels * dm.density)/(dm.xdpi * 2); 
    aDisplayInfo.heightInch = ((dm.heightPixels * dm.density)/(dm.ydpi * 2)); 
    aDisplayInfo.widthPix = dm.widthPixels; 
    aDisplayInfo.heightPix = dm.heightPixels; 

    // approaach 1 
    aDisplayInfo.diagonalInch = twoDecimalForm.format(Math.sqrt(Math.pow(
      aDisplayInfo.widthInch, 2) 
      + Math.pow(aDisplayInfo.heightInch, 2))); 

运行此代码后,我在不同的设备中发现了不同的结果。像:

  • 三星Galaxy S3 = 4.8Hz英寸(正确)
  • 的HTC One X = 6.8Hz英寸(错误)将4.7英寸]

有什么不对的代码?任何形式的帮助将不胜感激。

回答

0

试试这个:

aDisplayInfo.widthInch = dm.widthPixels/dm.xdpi; 
aDisplayInfo.heightInch = dm.heightPixels/dm.ydpi; 

widthPixels/heightPixels应该是物理像素数。 xdpi/ydpi应该是每英寸像素。您不需要对这些值进行任何缩放。

+0

检查后我会回复 –

+0

它就像一个魅力 –

+0

它适用于大多数设备,有些设备有错误.. –