我使用 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, 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);
}
}
关于代码是好的代码还是有更好的方法来做这个???
答案 0 :(得分:0)
我很惊讶您自己启动 AccessibilityService
(在 click
方法中)...这种 Service
必须由系统自动启用、允许和启动,查看如何在 HERE 中声明。没有那个进程(系统自动启动,不是自己的调用)AccessibilityService
可能会像往常一样Service
,导致没有权限执行 dispatchGesture
(和所有其他敏感的方法调用),还有一些自定义 AccessibilityService
方法永远不会被调用,例如被覆盖,但为空 onAccessibilityEvent(...)