4

Android画面の対角寸法をインチで計算することは可能ですか.

以下の2つのアプローチを試しましたが、どちらも私の場合には適していません。

アプローチ 1:

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int absoluteHeightInPx = displayMetrics.heightPixels;
int absoluteWidthInPx = displayMetrics.widthPixels;     
double diagonalPixels = Math.sqrt((absoluteHeightInPx * absoluteHeightInPx) + (absoluteWidthInPx * absoluteWidthInPx));
double diagonalInInches = diagonalPixels / displayMetrics.densityDpi;

アプローチ 2:

float actualHeight = absoluteHeightInPx * deviceDensity;
float actualWidth = absoluteWidthInPx * deviceDensity;
float deviceDensity = displayMetrics.density;
float physicalPixelPerInchX = displayMetrics.xdpi;
float physicalPixelPerInchY = displayMetrics.ydpi;
float heightInInches = actualHeight / physicalPixelPerInchY;
float widhtInInches = actualWidth / physicalPixelPerInchX;
double diagonalInInches = Math.sqrt((heightInInches * heightInInches) + (widhtInInches * widhtInInches));

私が間違っている場合は修正していただけますか。

ありがとう、イースワール

4

2 に答える 2

7

私は以下のコードを使用し、それは私のMotoDeyで動作します。

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

    float height=metrics.heightPixels/metrics.xdpi;
    float width=metrics.widthPixels/metrics.ydpi;

    TextView tv=(TextView) findViewById(R.id.textview);
    tv.setText("The screen size is:"+FloatMath.sqrt(height*height+width*width));

実際の対角線の長さは3.7インチで、コードは3.6979072を示します。これは十分に正確です。SDKの説明によると、私の方法は他のデバイスでも機能するはずです。

于 2012-08-29T12:17:43.353 に答える
-1

私は 8 つの Android デバイスで両方のアプローチをテストしました。2番目はほぼ正確です。

しかし、いくつかのデバイスでは、これは適切な答えを与えていません。だから私は2番目のアプローチに従って結論付けました。

于 2012-08-31T09:30:36.533 に答える