Get screen resolution of device
14,615
Solution 1
The best way to get your screen resolution is from DisplayMetrics
:
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
Solution 2
If you are targeting for API >= 17, try with the getRealSize
method of the Display
class:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
wm.getDefaultDisplay().getRealSize(size);
String resolution = size.x + "x" + size.y;
for me, it worked.
Solution 3
Use this one:
private static String getScreenResolution(Context context)
{
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
return "{" + width + "," + height + "}";
}
Solution 4
The API returns the number of pixels an app can use, so this is the correct result.
Author by
prom85
Updated on June 04, 2022Comments
-
prom85 almost 2 years
I used following method to get the screen size:
public static Point getScreenSize(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); int w = wm.getDefaultDisplay().getWidth(); int h = wm.getDefaultDisplay().getHeight(); return new Point(w, h); }
On my samsung galaxy s6, this method returns 1080x1920... Although my device has a resolution of 1440x2560.
Why? Is there a better method to get the screen resolution that works on newer phones reliable as well?
EDIT
I need this method in a service! I don't have a view/activity for help, only the application context! And I need the REAL pixels
-
prom85 almost 8 yearsreturns the same values... I really need to know the real physical size of the device
-
prom85 almost 8 yearsreturns the same values... I really need to know the real physical size of the device
-
ViramP almost 8 yearsYou can't get device physical size in all device because that depends on device as well. ie. Check two devices Nexus 5 Lenovo K3 both size is 1080X1920 but when you call above function then get different values. so you check hardware button with device and marge those height with device height so at end you can get actual physical size which manufacture displaying at product.
-
A P over 7 yearsHow can i call this method from my class
-
ViramP over 7 yearsWindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); int width = metrics.widthPixels; int height = metrics.heightPixels;
-
Alexey Ozerov about 6 yearsNo, as getMetrics subtracs decor size. Use getRealSize()