2

使用android-event-injector库,我编写了一个应用程序来在触发某些事件时注入一个触摸事件。问题是我需要在给定的绝对坐标处注入触摸View,所以我执行以下操作来获取屏幕上的位置:

View v = /* find view*/;
int [] coords = new int[2];
v.getLocationOnScreen(coords);

这给了我屏幕上的绝对坐标。问题是触摸注入不起作用。

我可以在屏幕驱动程序中正确注入触摸,但由于某种原因,坐标被误解并且触摸被注入到其他地方。以下是一些示例(我的屏幕是 1024x600 横向):

  • 坐标 (0,0) -> 注入 (0,0)
  • 坐标 (0,600) -> 注入 (0,351)
  • 坐标 (1024,0) -> 未注入(很可能 x 超出范围)
  • 坐标 (1024,600) -> 未注入(很可能 x 超出范围)
  • 坐标 (640,480) -> 未注入(很可能 x 超出范围)
  • 坐标 (512,300) -> 注入 (872,175)
  • 坐标 (100,100) -> 注入 (170,58)
4

1 回答 1

4

根据样本值,似乎

  1. 触摸屏为 (600, 1024),
  2. 映射到 (1024,600) 显示。

要在(X,Y)显示坐标处产生触摸事件,需要注入的(x,y)触摸坐标可以计算如下

x(touch) = (600/1024) * X(disp)
y(touch) = (1024/600) * Y(disp)
于 2013-07-31T17:01:34.213 回答