En realidad, si desea tener el dpi de visualización real, la respuesta está en algún punto intermedio si consulta las métricas de visualización:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;
densidadDpi * 160 le dará los valores / sugerencia de qué densidad debe usar
0.75 - ldpi - 120 dpi
1.0 - mdpi - 160 dpi
1.5 - hdpi - 240 dpi
2.0 - xhdpi - 320 dpi
3.0 - xxhdpi - 480 dpi
4.0 - xxxhdpi - 640 dpi
como se especifica en publicaciones anteriores
pero dm.xdpi
no siempre le dará el dpi REAL de la pantalla dada: Ejemplo:
Device: Sony ericsson xperia mini pro (SK17i)
Density: 1.0 (e.g. suggests you use 160dpi resources)
xdpi: 193.5238
Real device ppi is arround 193ppi
Device: samsung GT-I8160 (Samsung ace 2)
Density 1.5 (e.g. suggests you use 240dpi resources)
xdpi 160.42105
Real device ppi is arround 246ppi
así que tal vez el dpi real de la pantalla debería ser Densidad * xdpi ... ¡pero no estoy seguro de si esta es la forma correcta de hacerlo!
getDisplayMetrics().xdpi
, que se supone que devuelve el dpi real del dispositivo. Tenga en cuenta que los fabricantes no establecen este valor de forma coherente en todos los dispositivos, por lo que simplemente no puede usarlos . Triste pero cierto: la información sobre ppp reales no está disponible . Fuente: groups.google.com/d/msg/android-developers/g56jV0Hora0/…