当我的手指触摸屏幕时自动点击停止

Auto click is stopping when my finger touches the screen

我使用 dispatchGesture and everything is working but when I touch the screen using my finger it stop and call onCancelled 方法制作了自动答题器

服务

public class MyService extends AccessibilityService {

    private Path path;
    private GestureDescription.Builder builder;
    private GestureDescription.StrokeDescription strokeDescription;
    private GestureResultCallback gestureResultCallback;
    private GestureDescription gestureDescription;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent.getBooleanExtra("isClicked", false)) {
            clickOnPosition();
        }
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {

    }

    @Override
    public void onInterrupt() {

    }

    private void clickOnPosition() {
        if (path == null) {
            path = new Path();
            path.moveTo(540, 960);
            path.lineTo(540, 960);
        }
        if (builder == null)
            builder = new GestureDescription.Builder();
        if (strokeDescription == null) {
            strokeDescription = new GestureDescription.StrokeDescription(path, 0, 500);
            builder.addStroke(strokeDescription);
        }
        if (gestureResultCallback == null)
            gestureResultCallback = new GestureResultCallback() {
                @Override
                public void onCompleted(GestureDescription gestureDescription) {
                    clickOnPosition();
                }

                @Override
                public void onCancelled(GestureDescription gestureDescription) {
                    super.onCancelled(gestureDescription);
                }
            };
        if (gestureDescription == null)
            gestureDescription = builder.build();
        dispatchGesture(gestureDescription, gestureResultCallback, null);
    }

}

MainActivity 中的按钮

public void click(View view) {
    if (intent == null) {
        intent = new Intent(this, MyService.class);
        intent.putExtra("isClicked", true);
        startService(intent);
    }
}

关于代码,它是好的代码还是有更好的方法???

我很惊讶你自己启动AccessibilityService(在click方法中)......这种Service必须由系统启用,允许和启动自动检查如何在 HERE 中声明它。如果没有这个过程(系统自动启动,而不是自己调用)AccessibilityService 可能会像往常一样表现 Service,导致没有执行 dispatchGesture(以及所有其他敏感方法调用)的权限,还有一些自定义 AccessibilityService 方法永远不会被调用,就像重写一样,但是空的 onAccessibilityEvent(...)