Android: la densidad del dispositivo se devuelve como cero desde algunos dispositivos

La densidad del dispositivo devuelve 0 de algunos dispositivos. El siguiente código se utiliza para calcular la densidad del dispositivo:

WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); density = metrics.density; 

Esto ha resultado en algunos accidentes en PlayStore. Los usuarios parecen estar utilizando: Galaxy Y Plus; Versión de Android 4.0.3 – 4.0.4 . También un dispositivo llamado ala-k70 tenía problemas. En un accidente fue la versión 4.2 .

Por favor aconséjame.

No hay mucho que puedas hacer aparte de manejar esto con gracia. Si la densidad es null o 0 compruébelo y utilice un valor predeterminado en este caso.

Una buena manera de obtener el DPI es generar un archivo string.xml para cada densidad.

Cree carpetas llamadas valores-mdpi, valores-hdpi, valores-xhdpi … y agregue un strings.xml en todos, con una cadena llamada densidad con el valor de la densidad (mdpi para strings.xml ubicado en valores-mdpi, etc. )

Entonces leer R.string.density le dará la densidad correcta

Esta forma funciona para mí en API nivel 4 o superior .:

 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); switch(metrics.densityDpi){ case DisplayMetrics.DENSITY_LOW: break; case DisplayMetrics.DENSITY_MEDIUM: break; case DisplayMetrics.DENSITY_HIGH: break; } 

Pruebe lo siguiente, tiene algunos problemas con el dispositivo anterior al nivel API 4

 DisplayMetrics metrics = getResources().getDisplayMetrics(); int densityDpi = (int)(metrics.density * 160f); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.