通过Android辅助功能服务模拟点击



我正试图利用可访问性服务模拟android应用程序中的点击功能。我已经在清单中设置了该服务,并在手机设置中启用了它。我有一个类MouseAccessabilityService,它包含以下点击功能:

// Clikc function that clicks at a specific x and y coordinate
@RequiresApi(api = Build.VERSION_CODES.N)
public static GestureDescription click(float x, float y) {
// for a single tap a duration of 1 ms is enough
final int DURATION = 1;
Path clickPath = new Path();
clickPath.moveTo(x, y);
GestureDescription.StrokeDescription clickStroke =
new GestureDescription.StrokeDescription(clickPath, 0, DURATION);
GestureDescription.Builder clickBuilder = new GestureDescription.Builder();
clickBuilder.addStroke(clickStroke);
return clickBuilder.build();
}

我通过按下触发点击的按钮调用MainActivity中的点击功能(出于测试目的(:

Buttonclick = (Button)findViewById(R.id.clickbutton);
Buttonclick.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View view) {
//changeButtonText.setText("Second Text");
MouseAccessabilityService.click(centerX, centerY);
}
});

X和Y作为一个整数变量从其他功能中传递。我似乎无法让click((函数在我的应用程序中工作并按下按钮。

我说得对吗?这个功能还能工作吗?我对此感到不知所措,如果有任何帮助,我将不胜感激。

谢谢。

您可以使用dispatchGesture函数。

尝试将单击函数的返回替换为:return dispatchGesture(clickBuilder.build(), null, null);

https://codelabs.developers.google.com/codelabs/developing-android-a11y-service/#7

最新更新