2013-10-18 10 views
5


Ich brauche für meine Anwendung den genauen Zoll eines Displays. Meine aktuelle Lösung ist:
Wie erhalten Sie die Anzeigegröße in Zoll in Android?

double inch; 
double x = Math.pow(widthPix/dm.xdpi,2); 
double y = Math.pow(heigthPix/dm.ydpi,2); 
double screenInches = Math.sqrt(x+y); 

inch = screenInches; 

inch = inch * 10; 
inch = Math.round(inch); 
inch = inch/10; 

Gibt es einen besseren Weg, um die Anzeige Zoll zu bekommen? Aktuelles es 5.9 auf meinem Testgerät 4 Zoll sagen, und das ist falsch ...

+0

Scheint das Beste zu sein, was Sie tun können. Wenn das Gerät über seine Metriken lügt, haben wir keine Chance. – Henry

+0

hm ok. Gibt es eine Liste von Geräten, die "lügen"? – ternes3

+0

Ich kenne keine Liste. Eine andere Idee wäre, dem Benutzer eine Möglichkeit zum Überschreiben zu geben. – Henry

Antwort

7

Die folgende gab mir aa Ergebnis ganz nah an die Spezifikationen:

DisplayMetrics dm = getResources().getDisplayMetrics(); 

    double density = dm.density * 160; 
    double x = Math.pow(dm.widthPixels/density, 2); 
    double y = Math.pow(dm.heightPixels/density, 2); 
    double screenInches = Math.sqrt(x + y); 
    log.info("inches: {}", screenInches); 

Ausgang: inches: 4.589389937671455
Specs: Samsung Galaxy Nexus (720 x 1280 Pixel, ~ 320 dpi, 4,65")

Bitte beachten Sie, dass dm.heightPixels (oder dm.widthPixels auf orientatation abhängig) nicht unbedingt genaue Informationen liefern, da Softkeys (wie im Galaxy Nexus verwendet) nicht hinzugefügt, um die Höhe (oder Breite).

+0

doppelte Dichte = dm.density * 160; Was ist 160? – Kailas

+0

Das ist die Referenzdichte eines MDPI-Bildschirms, bei der 1 dp = 1 px ist. Siehe http://developer.android.com/guide/practices/screens_support.html#overview und http://developer.android.com/reference/android/util/DisplayMetrics.html#density –

+0

danke Stack – Kailas

Verwandte Themen