通过Android无障碍服务模拟点击

问题描述 投票:1回答:1

我正在尝试使用可访问性服务在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()函数正常工作并按一个按钮。

我在正确的页面上吗?此功能甚至可以使用吗?我对此感到停顿,不胜感激。

谢谢。

java android
1个回答
0
投票

您可以使用dispatchGesture函数。

尝试用以下方式替换点击功能的返回值:return dispatchGesture(clickBuilder.build(), null, null);

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

© www.soinside.com 2019 - 2024. All rights reserved.