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设备的数量