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

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

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

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

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

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

基于样本值,它似乎是

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

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

 x(touch) = (600/1024) * X(disp) y(touch) = (1024/600) * Y(disp)