adb shell getevent中获取到的屏幕事件的坐标转换

通过使用adb shell getevent,可以得到如下设备操作后的指令,具体表示的含义,可以参考网上很多的文章,这里就不再叙述



这里的0035和0036分别表示屏幕上的X坐标和Y坐标,后面的值表示具体的坐标点,通过16进制转换可以得到值1142和1527,而我手机的屏幕分辨率为800*480的,很明显两个点是完全不匹配,那如何转换呢?

在cmd中输入adb shell getevent -p


找到您的屏幕设备中0035和0036的含义,我的手机中可以看到x的值min为0,max为1172,y的值min为0,max为1900。
这样就找到您的设备的坐标具体大小值,这里计算公式如下:
x=(x-xmin)*480/(xmax-xmin) ;
y=(y-ymin)*800/(ymax-ymin);

这样算出的坐标值就跟您手机的屏幕分辨率相匹配了。
该公式是通过查看androidvncserver源码,然后反向推出的公式,目前碰到的手机min都为0,未测试过不过为0的情况,如果不为0的情况这个公式是错误的,请各位同学补充。

你可能感兴趣的:(android自动测试)