如何从adb命令行获取Android设备的屏幕尺寸?

How to get the Android device screen size from the adb command line?

我需要一种使用adb检测设备屏幕尺寸和密度的方法。
如果没有解决方案,我在哪里可以获得所有现有android设备的完整列表及其屏幕大小和密度?


您还可以通过ADB访问WindowManager:

1
2
3
4
5
$ adb shell wm
usage: wm [subcommand] [options]
       wm size [reset|WxH]
       wm density [reset|DENSITY]
       wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]

要获得屏幕分辨率:

1
2
$ adb shell wm size
Physical size: 2880x1600

要获取屏幕密度:

1
2
$ adb shell wm density
Physical density: 320

您还可以通过添加新的密度来覆盖密度:

1
$ adb shell wm density 160

LCD密度在build.prop:

1
adb shell getprop ro.sf.lcd_density

该分辨率在输入活动的dumpsys中可用:

1
2
3
4
# windows
adb shell dumpsys window | find"DisplayWidth"
# linux
adb shell dumpsys window | grep DisplayWidth

它适用于我测试过的所有设备(2.2、2.3.3、2.3.4、4.0.3;宏; Liquid E,HTC Wildfire S,HTC Incredible S,摩托罗拉Atrix 4G,三星Galaxy Note,三星Galaxy Nexus)和仿真器,尽管仿真器的输出太干净了,无法用作解析的好例子。


1
dumpsys window displays

显示如下内容:

1
2
3
Display: mDisplayId=0
  init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845
  layoutNeeded=false

另一种方式:

1
dumpsys display

还显示了一些有趣的东西,例如:

1
mDefaultViewport=DisplayViewport{valid=true, displayId=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 1920), physicalFrame=Rect(0, 0 - 1080, 1920), deviceWidth=1080, deviceHeight=1920}

最后但并非最不重要:

1
dumpsys power

将显示类似

的内容

1
2
3
4
5
6
7
8
Electron Beam State:
  mPrepared=false
  mMode=2
  mDisplayLayerStack=0
  mDisplayWidth=1080
  mDisplayHeight=1920
  mSurfaceVisible=false
  mSurfaceAlpha=0.0

您可以轻松地使用grep来显示mDisplayWidth和mDisplayHeight


要从ADB获取必需的信息,从命令行执行以下命令将返回有关已连接设备的许多有用的属性

1
> adb shell getprop

通过这些属性进行过滤

在Unix上使用grep如

1
> adb shell getprop | grep density

在Windows上

使用类似于

的查找

1
> adb shell getprop | findstr"density"

返回值类似于

1
[ro.sf.lcd_density]: [240]

用于屏幕尺寸而不是密度


工作顺利:

1
dumpsys window | grep Display

返回:显示:init = 320x480 cur = 320x480 app = 320x480 rng = 320x295-480x455


1
2
ANDROID:/ # dumpsys window | grep  mGlobalConfiguration                                                                                                                                                
mGlobalConfiguration={1.0 ?mcc?mnc [en_US] ldltr sw720dp w1920dp h532dp 160dpi

因此分辨率为1920x720


您可以使用以下代码获取屏幕尺寸:

1
2
3
4
5
6
7
8
9
10
11
12
13
public int getScreenHeight() {
    return getDisplay().getHeight();
}

private Display getDisplay() {
    return ((WindowManager) getContext().getSystemService(
            Context.WINDOW_SERVICE)).getDefaultDisplay();
}


public int getScreenWidth() {
    return getDisplay().getWidth();
}

在上面的代码中有"显示器"后,就可以使用DisplayMetrics来获取密度。 DisplayMetrics还将为您提供绝对显示高度和高度。


查看adb shell dumpsys的输出。屏幕尺寸在那里显示了几次,还有许多其他信息。

...虽然现在我在办公室,但可以在手机上使用,但Galaxy平板电脑没有此功能。达恩


如果您需要使用其屏幕尺寸和密度来获取市场上可用的Android设备范围的当前状态,请单击此处

此数据基于截至数据收集日期的7天内访问Android电子市场的Android设备的数量