您的位置:首页 > 其它

Monkey详解(脚本篇---获取坐标)

2017-08-24 18:43 218 查看
坐标是Monkey脚本的核心。Monkey提供了选取控件的API,而坐标是API Input Param的必要参数。那么如何获取控件的坐标呢?

同款机型,不同分辨率下的绝对坐标相同。但不同分辨率下,相对坐标不同。需要两个步骤。

(1)获取当前绝对坐标。

在shell 中使用getevent(大小写敏感),获取当前Event。

C:\Users\XXXX>adb shell
HWMHA:/ # getEvent
/system/bin/sh: getEvent: not found
127|HWMHA:/ # getevent
add device 1: /dev/input/event5
name:     "huawei,touchscreen"
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 2: /dev/input/event2
name:     "hisi_on"
add device 3: /dev/input/event1
name:     "hisi_gpio_key"
add device 4: /dev/input/event3
name:     "fingerprint"
add device 5: /dev/input/event4
name:     "hi3660_HI6403_CARD Headset Jack"
add device 6: /dev/input/event0
name:     "soundtrigger_input_dev"
could not get driver version for /dev/input/mice, Not a typewriter


若无屏幕触碰事件,则返回如上信息。即设备名称。

若触碰屏幕,则将看到,在设备信息之后,又有结果输出。

/dev/input/event5: 0003 003a 00000032
/dev/input/event5: 0003 0035 000001ef
/dev/input/event5: 0003 0036 000003fe
/dev/input/event5: 0003 0039 00000000
/dev/input/event5: 0000 0002 00000000
/dev/input/event5: 0001 014a 00000001
/dev/input/event5: 0000 0000 00000000
/dev/input/event5: 0000 0002 00000000
/dev/input/event5: 0001 014a 00000000
/dev/input/event5: 0000 0000 00000000


有四列信息,分别为:设备名称,Code,Type,Value.

Code是指:该事件是什么。

Type是指:事件的相关参数

Value是指:事件参数的值。

Code的值很多,我们这里只需要记住一个。

0003—>绝对坐标。

另外,买一赠三

0000—>同步事件。代表某一操作的完成。

0001—>key_broad。

0002—>相对坐标。

不同的Code有不同的Type。下面我们来看绝对坐标的Type。

当然,我们也只关注两个值。

0035—>绝对坐标X

0036—>绝对坐标Y

例子中的值X,Y分别为0x1ef,0x3fe。转换为十进制为495,1022。

目的达到,Ctrl+C,结束getEvent。

(2)根据分辨率对坐标值进行转换。

转换需要五个参数,即X轴的最大值,最小值,Y轴的最大值,最小值,当前的分辨率。

转换公式为:

相对坐标X =(X-X轴最小值)*分辨率X/(X轴最大值-X轴最小值)
相对坐标Y =(Y-Y轴最小值)*分辨率Y/(Y轴最大值-Y轴最小值)


注:其中数值都为十进制。

那么如何获取X,Y轴的最大最小值呢?

使用getevent的-p参数获取。

130|HWMHA:/ # getevent -p
add device 1: /dev/input/event5
name:     "huawei,touchscreen"
events:
KEY (0001): 003b  003c  003d  003e  003f  0041  0042  0043
0044  0057  0058  00bd  00be  00bf  00c0  00c1
0145  014a
ABS (0003): 0000  : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0
0001  : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0
0018  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
0030  : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0
0032  : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0
0033  : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0
0035  : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0
0036  : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0
0039  : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0
003a  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0


我们可以很容易的找到0035,0036。

那么X轴,最大值为max 1079,最小值为min 0。

Y轴,最大值为max 1919,最小值为min 0。

那么分辨率呢?

C:\Users\XXXX>adb shell wm size
Physical size: 1080x1920


剩下的就是计算了。

至此,坐标已获取完毕。之后就是Monkey API的使用问题了。

我们将在下一篇中讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  monkey 脚本 坐标