2011-01-31 15 views
1

私はAndroidアプリで複数の画面サイズをサポートするために取り組んでおり、デバイスの物理的な画面サイズを知る必要があります。Sony Ericsson X10の物理的な画面サイズを計算していますか?

Sony Ericsson X10では、物理的な画面の解像度と密度を照会して、画面サイズ(解像度/密度=サイズ)を計算しようとしていますが、結果は実際のサイズの約1.5倍です!

DisplayMetrics metrics = c.getResources().getDisplayMetrics(); 
    mPhysicalScreenWidth = metrics.widthPixels/metrics.xdpi; 
    mPhysicalScreenHeight = metrics.heightPixels/metrics.ydpi; 
    Log.d(TAG, "DisplayMetrics: widthPixels=" + metrics.widthPixels + " xdpi=" + metrics.xdpi + 
      " heightPixels=" + metrics.heightPixels + " ydpi=" + metrics.ydpi); 
    Log.d(TAG, "Physical screen width=" + mPhysicalScreenWidth + "\", height=" + mPhysicalScreenHeight + "\""); 

ログに出力:

DisplayMetrics: widthPixels=480 xdpi=160.41878 heightPixels=854 ydpi=159.49677 
Physical screen width=2.9921684", height=5.3543406" 

この実際のサイズはわずか2" である(高い)(ワイド)3.5" ×!ここ

コードです

何か間違っていますか?

私はAndroid 1.6 SDKを使用していますが、マニフェスト内の< support-screens>属性をすべてtrueに設定しました。

+0

この電話機の画面の実際のdpiは240です。なぜそれが160として返されるのかわかりません。 –

+0

"scaledDensity"パラメータと関係がありますか?違いを報告すると、正確に1.5です。私はまた240を報告する "densityDpi"パラメータを見つけました。 –

+0

あなたはこの問題の解決策を見つけましたか? – Nik

答えて

2

私が考えることができる唯一の説明は、デバイスのdpi値が間違っているということです(私には間違った広告のように聞こえます)。画面のサイズは4.0インチで、解像度は160 dpiです。あなたが持っているピクセル値は正しいです、つまりあなたが持っているインチのサイズが正しく計算されていることを意味します。私がオンラインで見つけたすべての値(wikipediagsmarena)は同じことを言っています。

しかし、画面サイズは実際には4.0インチ越え...

のsqrt(5.35^2 + 3.0^2)=実際よりも大きな道全体で6.14インチ、です。

これは、dpi値が正しくない必要があるように聞こえます。実際には少し大きくする必要があります。いくつかの値を差し込んだら、実際のdpiは約240でなければなりません。なぜ値がどこに間違って表示されるのかわかりません...

編集:もう少しこれを研究した後、xperia x10 xとyの両方について245のdpiを有することが報告されている。

1

これは古い質問ですが、バグはまだ残っています。

metrics.setToDefaults(); 
関連する問題