小编典典

使用屏幕驱动程序注入触摸事件

java

使用android-event-injector库,我编写了一个在触发某些事件时注入touch事件的应用程序。问题是我需要在给定的绝对坐标处注入触摸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)

阅读 223

收藏
2020-11-01

共1个答案

小编典典

根据样本值,似乎

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

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

x(touch) = (600/1024) * X(disp)
y(touch) = (1024/600) * Y(disp)
2020-11-01