【发布时间】:2015-05-29 17:09:09
【问题描述】:
使用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)
【问题讨论】:
-
当您尝试将触摸事件注入屏幕驱动程序时,可能您忽略了屏幕校准(幅度和/或轴),这导致您的触摸事件被理解,但在错误的屏幕上坐标。在 Android 设置中的开发人员选项中启用指针 x、y 坐标的显示,并使用在驱动程序中注入的几对值和在屏幕上检测到的值(理想情况下在显示器四个角的任何位置)更新您的问题。
-
@TheCodeArtist 我尝试并添加了一些示例。
标签: java android linux-device-driver