0

デバイスのディスプレイの対角線の長さを取得するために取り組んでいます。対角線 = 幅 * 幅 + 高さ * 高さという式を使用しました。これを達成するために、以下のコードを使用します。

    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)));

このコードを実行した後、さまざまなデバイスでさまざまな結果が得られました。お気に入り:

  • Samsung Galaxy S3 = 4.8 インチ (正しい)
  • HTC One X = 6.8 インチ (間違い) [4.7 インチになります]

このコードの何が問題になっていますか? あらゆる種類の助けをいただければ幸いです。

4

1 に答える 1