Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从adb命令行获取Android设备屏幕大小?_Android_Adb - Fatal编程技术网

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

如何从adb命令行获取Android设备屏幕大小?,android,adb,Android,Adb,我需要一种方法来检测设备的屏幕大小和密度与亚行。 如果没有解决方案,我在哪里可以获得所有现有android设备及其屏幕大小和密度的完整列表?您可以使用以下代码获得屏幕尺寸: public int getScreenHeight() { return getDisplay().getHeight(); } private Display getDisplay() { return ((WindowManager) getContext().getSystemService(

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

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

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

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


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

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

如果您需要了解市场上可用安卓设备范围的当前状态,请使用它


此数据基于在数据收集日期结束的7天内访问Android Market的Android设备数量。要从ADB获取所需信息,从命令行执行的以下命令将返回有关连接设备的许多有用属性

> adb shell getprop
以筛选这些属性

在Unix上使用类grep

> adb shell getprop | grep density
在Windows上使用find like

> adb shell getprop | findstr "density"
返回值看起来像

[ro.sf.lcd_density]: [240]

对于屏幕大小,将显示而不是密度,请查看adb shell dumpsys的输出。屏幕大小在那里显示了好几次,还有很多其他信息


。。。虽然现在我在办公室,虽然它在我的手机上工作,但它在Galaxy平板电脑上却不存在。该死。

LCD密度在build.prop中:

adb shell getprop ro.sf.lcd_density
并且可在输入活动的dumpsys中获得解析:

# 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;Acer Liquid E、HTC Wildfire S、HTC Inclusible S、Motorola Atrix 4G、三星Galaxy Note、三星Galaxy Nexus)以及仿真器,尽管仿真器的输出太干净,无法作为解析的好例子

显示如下内容:

Display: mDisplayId=0
  init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1005-1920x1845
  layoutNeeded=false
另一种方式:

dumpsys display
还显示了一些有趣的内容,如:

mDefaultViewport=DisplayViewport{valid=true, displayId=0, orientation=0, logicalFrame=Rect(0, 0 - 1080, 1920), physicalFrame=Rect(0, 0 - 1080, 1920), deviceWidth=1080, deviceHeight=1920}
最后但并非最不重要的是:

dumpsys power
将显示以下内容

Electron Beam State:
  mPrepared=false
  mMode=2
  mDisplayLayerStack=0
  mDisplayWidth=1080
  mDisplayHeight=1920
  mSurfaceVisible=false
  mSurfaceAlpha=0.0

您可以轻松地使用它来grep获取mDisplayWidth和mDisplayHeight,您还可以通过ADB访问WindowManager:

$ adb shell wm
usage: wm [subcommand] [options]
       wm size [reset|WxH]
       wm density [reset|DENSITY]
       wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]
要获得屏幕分辨率,请执行以下操作:

$ adb shell wm size
Physical size: 2880x1600
要获得屏幕的密度,请执行以下操作:

$ adb shell wm density
Physical density: 320
也可以通过添加新密度来替代密度:

$ adb shell wm density 160
工作很好:

dumpsys window | grep Display
返回:显示:初始值=320x480电流=320x480应用程序=320x480 rng=320x295-480x455

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

因此分辨率为1920x720

我无法在设备上启动任何应用程序。我需要获取特定设备的屏幕大小,而不是所有现有大小。屏幕大小不会显示屏幕大小,而不是显示densityMotorola Xoom,例如,不显示显示信息。我知道,并非适用于所有设备。密度是否与屏幕宽度相同?对于事件处理程序,还可以使用
getevent-p
获得有效输入坐标的最小/最大范围。这与某些触摸输入设备位于挡板下的情况有关,因此可用最小值实际上从大于0.ro.sf的某个值开始。lcd_密度不适用于我尝试过的两个设备(GT-P7510和Dell Streak),而适用于其他5个设备(GT-P1000、Galaxy Nexus、MotoA953、DROID2 GLOBAL、Xoom)如果上述命令不起作用,请尝试命令adb shell dumpsys窗口|查找“mUnrestrictedScreen”
ANDROID:/ # dumpsys window | grep  mGlobalConfiguration                                                                                                                                                
mGlobalConfiguration={1.0 ?mcc?mnc [en_US] ldltr sw720dp w1920dp h532dp 160dpi