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

问题描述

我使用 dispatchGesture 做了自动点击器,一切正常,但是当我用手指触摸屏幕时,它会停止并调用 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,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(...)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...