1

我正在尝试编写一个脚本来测试我的应用程序,但是当我使用 sendevent 时,x 和 y 坐标是错误的。当我检查 getevent 输出时,我可以看到坐标乘以 1.65 如何以编程方式获得这个比例因子?

4

1 回答 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 回答