如何从adb命令行获取Android设备屏幕大小?

use*_*469 49 android adb

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

Alb*_*ees 65

您还可以通过ADB访问WindowManager:

$ adb shell wm
usage: wm [subcommand] [options]
       wm size [reset|WxH]
       wm density [reset|DENSITY]
       wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]
Run Code Online (Sandbox Code Playgroud)

以下命令将为您提供密度:

$ adb shell wm density
Physical density: 320
Run Code Online (Sandbox Code Playgroud)

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

$ adb shell wm density 160
Run Code Online (Sandbox Code Playgroud)


Nis*_*n.H 32

LCD密度在build.prop中:

adb shell getprop ro.sf.lcd_density
Run Code Online (Sandbox Code Playgroud)

并且在输入活动的dumpsys中可以使用该解决方案:

# windows
adb shell dumpsys window | find "DisplayWidth"
# linux
adb shell dumpsys window | grep DisplayWidth
Run Code Online (Sandbox Code Playgroud)

它适用于我测试过的所有设备(2.2,2.3.3,2.3.4,4.0.3; Acer Liquid E,HTC Wildfire S,HTC Incredible S,Motorola Atrix 4G,Samsung Galaxy Note,Samsung Galaxy Nexus) ,以及模拟器,虽然模拟器的输出太干净,不能作为解析的好例子.

  • 如果上述命令不起作用,请尝试命令adb shell dumpsys window | 找到"mUnrestrictedScreen" (10认同)

chr*_*k3y 20

dumpsys window displays
Run Code Online (Sandbox Code Playgroud)

显示这样的事情:

Display: mDisplayId=0
  init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845
  layoutNeeded=false
Run Code Online (Sandbox Code Playgroud)

其他方式:

dumpsys display
Run Code Online (Sandbox Code Playgroud)

还展示了一些有趣的东西:

mDefaultViewport=DisplayViewport{valid=true, displayId=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 1920), physicalFrame=Rect(0, 0 - 1080, 1920), deviceWidth=1080, deviceHeight=1920}
Run Code Online (Sandbox Code Playgroud)

最后但并非最不重要:

dumpsys power
Run Code Online (Sandbox Code Playgroud)

会显示类似的东西

Electron Beam State:
  mPrepared=false
  mMode=2
  mDisplayLayerStack=0
  mDisplayWidth=1080
  mDisplayHeight=1920
  mSurfaceVisible=false
  mSurfaceAlpha=0.0
Run Code Online (Sandbox Code Playgroud)

您可以轻松地使用grep来查看mDisplayWidth和mDisplayHeight


Eli*_*ine 10

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

> adb shell getprop
Run Code Online (Sandbox Code Playgroud)

过滤这些属性

在Unix上使用grep之类的

> adb shell getprop | grep density
Run Code Online (Sandbox Code Playgroud)

在Windows上使用find like

> adb shell getprop | findstr "density"
Run Code Online (Sandbox Code Playgroud)

返回值看起来像

[ro.sf.lcd_density]: [240]
Run Code Online (Sandbox Code Playgroud)

对于屏幕尺寸放置显示而不是密度


Nar*_*vet 0

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

public int getScreenHeight() {
    return getDisplay().getHeight();
}

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


public int getScreenWidth() {
    return getDisplay().getWidth();
}
Run Code Online (Sandbox Code Playgroud)

一旦您在上面的代码中获得了 Display,您就可以使用DisplayMetrics来获取密度。DisplayMetrics 还将为您提供绝对显示和高度。