Android Getevent和指针位置
我试图通过开发者选项中的指针位置选项获得触摸屏的(x,y)坐标,我使用这些坐标使用sendevent点击屏幕。下面是我执行sendevent的脚本 tap.shAndroid Getevent和指针位置,android,touch,adb,Android,Touch,Adb,我试图通过开发者选项中的指针位置选项获得触摸屏的(x,y)坐标,我使用这些坐标使用sendevent点击屏幕。下面是我执行sendevent的脚本 tap.sh sendevent/dev/input/event0 3 57 2421 sendevent/dev/input/event0 3 58 232 sendevent/dev/input/event0 3 53$1 sendevent/dev/input/event0 3 54$2 sendevent/dev/input/event0
sendevent/dev/input/event0 3 57 2421
sendevent/dev/input/event0 3 58 232
sendevent/dev/input/event0 3 53$1
sendevent/dev/input/event0 3 54$2
sendevent/dev/input/event0
sendevent/dev/input/event0 3 57 4294967295
sendevent/dev/input/event0
我从adb shellsh tap.sh
调用脚本,但它没有点击正确的坐标。相反,它是在不同的位置敲击
此外,当我点击屏幕并在geteventadb shell getevent
中检查结果时。我发现指针位置和getevent上显示的坐标是不同的
为什么它们不同?我如何解决这个问题
PS:我试过的设备是Nexus 7和Nexus 10。你知道getevent(根据我的经验,这可能因设备而异)显示基本16个值吗 (旁注:
getevent-l
通常更易于阅读,因为它打印事件类型的字符串表示形式)
i、 e.如果getevent-l
表示
/dev/input/event1: EV_ABS ABS_MT_POSITION_X 000001cb
/dev/input/event1: EV_ABS ABS_MT_POSITION_Y 00000376
触摸的位置实际上是(459886)
但是,如果您的代码能够正常工作,那么sendevent在要求十六进制值方面似乎并不符合要求,因为您的(例如)53
和54
在我使用的地方工作
0035
和0036
编辑:
在Nexus 5上尝试了原始代码(在中替换了正确的设备文件),我发现没有生成触摸事件(也没有替换十六进制等价物,因为实验严格),也没有重用从getevent
捕获(并转换)的值。在此之前,我有更好的经验使用基于C one的Python脚本转换事件,并将输出直接写入设备文件
编辑2:
这个问题表明初始代码应该有效。您是否知道getevent(根据我的经验,这可能因设备而异)显示基本16个值 (旁注:
getevent-l
通常更易于阅读,因为它打印事件类型的字符串表示形式)
i、 e.如果getevent-l
表示
/dev/input/event1: EV_ABS ABS_MT_POSITION_X 000001cb
/dev/input/event1: EV_ABS ABS_MT_POSITION_Y 00000376
触摸的位置实际上是(459886)
但是,如果您的代码能够正常工作,那么sendevent在要求十六进制值方面似乎并不符合要求,因为您的(例如)53
和54
在我使用的地方工作
0035
和0036
编辑:
在Nexus 5上尝试了原始代码(在中替换了正确的设备文件),我发现没有生成触摸事件(也没有替换十六进制等价物,因为实验严格),也没有重用从getevent
捕获(并转换)的值。在此之前,我有更好的经验使用基于C one的Python脚本转换事件,并将输出直接写入设备文件
编辑2:
这个问题表明初始代码应该可以工作。从中获得的X和Y坐标与从开发人员选项中的指针位置获得的坐标不一样。它们使用公式进行映射
displayX = (x - minX) * displayWidth / (maxX - minX + 1)
displayY = (y - minY) * displayHeight / (maxY - minY + 1)
来源:从中获得的X和Y坐标与从开发人员选项中的指针位置获得的X和Y坐标不同。它们使用公式进行映射
displayX = (x - minX) * displayWidth / (maxX - minX + 1)
displayY = (y - minY) * displayHeight / (maxY - minY + 1)
来源:打开开发者选项并启用
指针位置
,点击屏幕时可以看到屏幕顶部的x和y坐标,使用这些坐标发送点击事件。打开开发者选项并启用指针位置
,可以看到屏幕顶部的x和y坐标当你点击屏幕时,使用这些坐标发送点击事件。你知道如何在最新的android版本(Q OS,安全补丁>2020年2月)中使用“adb shell dumpsys input”获取屏幕X和屏幕Y吗?你可以使用dumpsys获取显示高度/宽度,使用“adb shell--getevent-lp/dev/input/eventXXX”获取最小/最大X/Y值。只需添加您的特定事件id。您是否知道如何在最新android版本(Q OS,安全补丁>2020年2月)中使用“adb shell dumpsys input”获取Screen_X和Screen_Y?您可以使用dumpsys获取显示高度/宽度,使用“adb shell--getevent-lp/dev/input/eventXXX”获取最小/最大X/Y值。只需添加您的特定事件id。我可以在我的应用程序中获取这些x,y吗?我可以在我的应用程序中获取这些x,y吗?