Android无障碍功能执行触摸操作

3

我想知道是否可以使用Android无障碍服务在屏幕上的位置执行触摸操作,例如:

Bundle arguments = new Bundle();
arguments.putInt(/*coord X*/, /*X value*/);
arguments.putInt(/*coord Y*/, /*Y value*/);
node.performAction(/*touch action*/, arguments);

如果可能的话,记录用户在特定视图/位置上点击时的操作。

基本上,当软键盘弹出时(外部应用程序没有“提交”按钮以执行 ACTION_CLICK),我必须对其执行操作,但由于安全策略不允许注入事件。有什么想法吗?谢谢!


你的代码是用于在指定边界上的点击事件。 - undefined
你解决了这个问题吗? - undefined
将应用程序作为系统应用可以解决这个问题 :) 但是我不会在这里发布答案,因为对我来说这个问题已经过时了。 - undefined
2个回答

1

//触摸函数

public void touchTo(int x, int y) {
    Path swipePath = new Path();
    swipePath.moveTo(x, y);
    swipePath.lineTo(x, y);
    GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();
    gestureBuilder.addStroke(new GestureDescription.StrokeDescription(swipePath, 0, 50));
    dispatchGesture(gestureBuilder.build(), null, null);
}

在我的SupporterService类中,它能够正常工作并扩展辅助功能服务。

1
你不能通过屏幕上的位置执行任何操作,只能在节点上执行操作,但是你可以通过递归检查节点在屏幕上的位置并使用getBoundsInScreen找到你坐标上的节点。

如果是OpenGL游戏,则无法正常工作,并且你将无法仅在找到的节点上精确点击该位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接