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)
方案二:
直接打开手机设置 →打开 开发者选项 → 打开指针位置,手指点击屏幕即可显示坐标