从测记---Monkeyscript---坐标获取的两种方式

上一篇 / 下一篇  2018-03-08 21:05:51 / 个人分类:monkeyScript

2)如何获取坐标,步骤如下:

     方案一:

            步骤如下:

                 a.打开app(如:众托帮)

                 b. adb shell getevent(getevent是安卓下的一个工具,模拟多种按键和触屏操作,产生raw event,再经过event hub处理产生gesture事件)

                 c.点击app中“我的”区域:
                     

                     备注:

                        (1)/dev/input/event6: 0001 014a 00000001

                                                       |                    |           |         |

                                                       |                    |           |         |

                                          devicename         type    code  value

                       (2)getevent中type、code、value的定义可以查看kernel/include/linux/input.h,三者互相影响

                                 ①对于type的定义:

                                      # define EV_SYN0000同步事件——表示一组完整事件已经完成
                                      

 

                                      # define EV_KEY          0001        keyboard键盘事件

                                      # define EV_REL          0002        相对坐标

                                     # define EV_ABS          0003        绝对坐标

                                      # define EV_MSC             0004 

                                      # define EV_SW                0005

                                      # define EV_LED            0011

                                      # define EV_SND           0012

                                       。。。。。。

                              ②对于code的定义:

                                    1) type值为# define EV_SYN      0000,其code值为:

                                          # define SYN_REPORT             0

                                          # define SYN_CONFIG             1

                                          # define SYN_MT_REPORT     2

                                    2) type值为# define EV_ABS      0003,其code值为:

                                         # define ABS_X0000        绝对坐标X

                                         # define ABS_Y0001        绝对坐标Y

                                         # define ABS_Z0002        绝对坐标Z

                                         # define ABS_RX 0003

                                         # define ABS_RY 0004

                                         # define ABS_RZ 0005

                                          。。。

                                         # define ABS_MT_TOUCH_MAJOR    0030    主接触面的长轴:若屏幕分辨率为X*Y,那么 ABS_MT_TOUCH_MAJOR最大值为sqrt(X`2+Y`2),即为:平方和的正数开根

                                         # define ABS_MT_WIDTH_MAJOR         0032

                                       # define ABS_MT_POSITION_X    0035    椭圆中心绝对坐标X

                                       # define ABS_MT_POSITION_Y    0036    椭圆中心绝对坐标Y

                                         。。。

                     注意点:           

                                     当0030和0032出现时,表示有触屏事件发生;

                                    当0035和0036出现时,表示实际触屏时的绝对坐标X和Y;

                                    通过getevent获取到的值为16进制。
                                     

                                     此时绝对坐标(X,Y)为(28e,4de)

            (3)若对于不同分辨率的设备,如何获取绝对坐标点,步骤如下:

                        ① 发现命令adb shell getevent时可以看到device name为:/dev/input/event6,即设备号为:adb device 3

                        ②adb shell getevent -p
                         
                        ③显示了code值得范围:当code为0035和0036,对应本机x最小值0,最大值720;对应y最小值0,最大值1280;

                        ④获取手机设备的分辨率: adb shell wm size   即为:720x1280

                         

                        ⑤通过Android VNCServer源码,得出公式为: 计算时要将十六进制全部转化为十进制

                               相对坐标X=(x - xmin)*(getevent中的十进制值 * 分辨率宽度)/ (0035max - 0035min)

                               相对坐标Y=(y - ymin)*(getevent中的十进制值 * 分辨率高度)/  (0036max - 0036min)

     方案二:

                    直接打开手机设置 →打开 开发者选项 → 打开指针位置,手指点击屏幕即可显示坐标


TAG:

 

评分:0

我来说两句

Open Toolbar