1

Androidアプリで複数の画面サイズのサポートに取り組んでおり、デバイスの物理的な画面サイズを知る必要があります。

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"(幅)x 3.5"(高さ)です!?

私は何か間違ったことをしていますか?

Android 1.6 SDKを使用しており、マニフェストのすべての<supports-screens>属性をtrueに設定しました。

4

2 に答える 2

2

私が考えることができる唯一の説明は、デバイスのdpi値が正しくないということです(私には虚偽の広告のように聞こえます編集:それらを悪化させるための虚偽の広告?)。画面のサイズは4.0インチ、解像度は160dpiです。あなたが持っているピクセル値は正しいです、それはあなたが持っているインチサイズが正しく計算されていることを意味します。私がオンラインで見つけたすべての値(ウィキペディアgsmarena)は同じことを言っています。

しかし、画面サイズは実際には全体で4.0インチです...

sqrt(5.35 ^ 2 + 3.0 ^ 2)=幅6.14インチ、実際よりもはるかに大きい。

これは、dpi値が正しくない必要があるようです。実際には少し大きくする必要があります。いくつかの値を差し込んだ後、実際のdpiは約240である必要があります。値がどこでも正しくリストされない理由がわかりません...

編集:これをもう少し調査した後、xperiax10はxとyの両方で245のdpiを持っていると報告されています。

于 2011-01-31T20:38:51.467 に答える
1

これは古い質問ですが、バグはまだ残っています。(一部の)SonyデバイスでDisplay Metricsを使用する場合は、次のことを行う必要があります。

metrics.setToDefaults();
于 2014-03-28T10:07:12.690 に答える