当前位置: 首页 > 面试题库 >

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

赫连俊雄
2023-03-14
问题内容

使用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)

问题答案:

根据样本值,似乎

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

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

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


 类似资料:
  • 所以我正在制作一个简单的寻宝游戏。我已经实现了SurfaceHolder.Callback和OnTouchListener方法。当触摸屏幕以挖掘宝藏时,应用程序崩溃。 下面是 DrawSurface 类的代码: 以下是我收到的错误消息: E/AndroidRuntime: FATAL EXCEPTION: main Process:justinrhinehart.cse.fullsail.trea

  • 点击一次屏幕,就会出现一个不断扩大的圆圈效果。可以自定义圆圈颜色。Gif动画是小编不断点击屏幕产生的类似水纹的效果。 [Code4App.com]

  • 触摸操作概述 浏览器的触摸 API 由三个部分组成。 Touch:一个触摸点 TouchList:多个触摸点的集合 TouchEvent:触摸引发的事件实例 Touch接口的实例对象用来表示触摸点(一根手指或者一根触摸笔),包括位置、大小、形状、压力、目标元素等属性。有时,触摸动作由多个触摸点(多根手指)组成,多个触摸点的集合由TouchList接口的实例对象表示。TouchEvent接口的实例对

  • 是不是可以在不接触屏幕的情况下选择一个应用程序的一个按钮?我正在为残疾人开发一个应用程序,我需要控制其他应用程序而不需要触摸屏幕。我可以做一些与意图类,但并不总是解决方案。例如,你不能发送一个whatsapp,如果没有触摸屏幕的意图(你可以在框中放置文本,或者查看与特定联系人的对话,但你不能发送一个whatsapp,你需要物理选择特定按钮),所以我想知道是否有一种方法,可以选择屏幕中显示的按钮,而

  • 我试着用java selenium web驱动程序中的TakeScreenshot来截屏。当我在页面中使用scrollTo(x, y)滚动特定数量时,TakeScreenshot方法会给我屏幕截图第一个视口,而不是滚动后到达的视口。 我想知道TakeScreenshot方法是给出OperaWebDriver中第一个视口的屏幕截图还是当前视口的屏幕截图。在chrome中,它拍摄了当前网络驱动程序的屏

  • 触摸事件是手机游戏中最重要的事件,它易于创建,还能提供多种多样的功能。 让我们先了解一下什么是触摸事件,当你触摸移动设备的屏幕时,设备感受到被触摸,了解到被触摸的位置,同时取得触摸到的内容,然后你的触摸被回答。 这就是触摸事件。 如果你希望通过触摸控制屏幕下层的对象,那可以通过 优先级,达成这种需求,优先级高的对象能先处理事件。 创建触摸事件监听器: // Create a "one by on