Android: muestra una resolución de pantalla incorrecta

Estaba tratando de obtener la resolución de pantalla de los teléfonos Android, usando este código

DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); str_ScreenSize = dm.widthPixels + " x " + dm.heightPixels; str_ScreenSize = "dd" + " x " + dm.heightPixels; 

Cuando probé este código en mi teléfono Galaxy S obtuve una resolución de pantalla de 320×533 px, pero en realidad el Galaxy S tiene una resolución de pantalla de 480×800 px. Entonces, ¿qué pasa con el código?

¿Cómo puedo obtener la resolución de pantalla real de un dispositivo en particular?

Finalmente, después de 2 días de búsqueda y prueba, finalmente me las arreglé para descubrir cuál es el verdadero problema aquí. Todos los códigos anteriores darán la resolución correcta. Pero lo más importante es que debemos mencionar el SDK objective en el archivo de manifiesto. De lo contrario, dará un resultado incorrecto si la densidad es más de 1.

  

necesita establecer la versión de targetSDK entre cualquier cosa entre 4 y 9. Espero que esto ayude a alguien en el futuro a enfrentar el mismo problema.

Intenta usar esto:

 width = getResources().getDisplayMetrics().widthPixels; height = getResources().getDisplayMetrics().heightPixels; 

Parece que está obteniendo el píxel después de la división de la densidad (1.5) de Galaxy S.

 480 / 1.5 = 320 799.5 / 1.5 = 533 

Editar:

 density = getResources().getDisplayMetrics().density; 

Inhabilite el escalado previo agregando esta línea a su archivo de manifiesto:

  

Posición:

     ... 

Después de eso, su pantalla ya no se escalará, y también obtendrá la resolución de visualización correcta.

prueba esto..

  Display display = getWindowManager().getDefaultDisplay(); int ScreenHeight = display.getHeight(); int ScreenWidth = display.getWidth(); 

Esto parece estar funcionando … aunque no sé si es un método correcto …

 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); density=dm.densityDpi; width=(density/160)*dm.widthPixels; height=(density/160)*dm.heightPixels; 

Así es como lo hice:

 Display dis = getWindowManager().getDefaultDisplay(); Point point= new Point(); dis.getSize(point); int width = point.x; int height = point.y; 

Cuando no está en una actividad:

 WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); 

Antes de que se introdujera getSize (en el nivel 13 de API), podría usar los métodos getWidth y getHeight que ahora están en desuso:

 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // deprecated int height = display.getHeight(); // deprecated