我正在尝试编写一个脚本来测试我的应用程序,但是当我使用 sendevent 时,x 和 y 坐标是错误的。当我检查 getevent 输出时,我可以看到坐标乘以 1.65 如何以编程方式获得这个比例因子?
问问题
582 次
1 回答
1
在带有 CyanogenMod 7.2 (Android 2.3.7) 的 Motorola Defy 上,我可以通过以下调用获取触摸设备(以及所有其他事件类型)返回的扫描仪坐标的最小值和最大值getevent -p /dev/input/event3
:
~ # getevent -p /dev/input/event3
getevent -p /dev/input/event3
add device 1: /dev/input/event3
name: "qtouch-touchscreen"
events:
SYN (0000): 0000 0001 0003
KEY (0001): 0066 008b 009e 00d9 0102 014a
ABS (0003): 0000 value 0, min 21, max 1003, fuzz 0 flat 0
0001 value 0, min 0, max 941, fuzz 0 flat 0
0010 value 0, min 21, max 1003, fuzz 0 flat 0
0011 value 0, min 21, max 1003, fuzz 0 flat 0
0018 value 0, min 0, max 255, fuzz 2 flat 0
001c value 0, min 0, max 20, fuzz 2 flat 0
0030 value 0, min 0, max 255, fuzz 2 flat 0
0032 value 0, min 0, max 20, fuzz 2 flat 0
0035 value 0, min 21, max 1003, fuzz 0 flat 0
0036 value 0, min 0, max 941, fuzz 0 flat 0
如您所见,Defy 的扫描仪坐标(事件 0035 和 0036)的最小值和最大值为 xMin=21、xMax=1003、yMin=0、yMax=941。
有了这些和给定的屏幕像素分辨率,任何像素坐标都可以轻松转换为扫描仪坐标。在 shell 脚本中,它看起来像这样(Moto Defy 的屏幕分辨率 = 480 x 854 px):
let xScanner=$(( $xPix * ($xMax-$xMin) / 479 + $xMin ))
let yScanner=$(( $yPix * ($yMax-$yMin) / 853 + $yMin ))
非常适合我。
于 2013-07-05T10:35:03.003 回答