SendGesture всегда возвращает falseJAVA

Программисты JAVA общаются здесь
Гость
SendGesture всегда возвращает false

Сообщение Гость »

Мой сервис не может инициировать касание экрана. sendGesture из AccessibilityService всегда возвращает false. Как решить эту проблему?
Мой сервис:
public class FloatingButton extends AccessibilityService {
private WindowManager windowManager;
private ImageView shotButton;
private int[2] passMark = {100, 100};
private int[2] shotMark = {200, 200};

@Override
public void onInterrupt() {}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {}

@Override
public void onCreate() {
super.onCreate();

shotButton = new ImageView(this);

shotButton.setImageResource(R.drawable.activate);

windowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
final LayoutParams shotButtonParams = getLayoutParams();
shotButtonParams.x = 0;
shotButtonParams.y = 100;

windowManager.addView(shotButton, shotButtonParams);

try {
OnTouchListener shotButtonOnTouchListener = getShotButtonOnTouchListener(shotButtonParams);
OnClickListener shotButtonOnClickListener = getShotButtonOnClickListener();

shotButton.setOnClickListener(shotButtonOnClickListener);
shotButton.setOnTouchListener(shotButtonOnTouchListener);
} catch (Exception exception) {
Log.e("SuperShot", exception.getMessage());
}
}

private LayoutParams getLayoutParams() {
final LayoutParams layoutParams = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_APPLICATION_OVERLAY,
LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);

layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
return layoutParams;
}

private OnClickListener getShotButtonOnClickListener() {
return new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("SuperShot", "Coordinate pass: " + String.valueOf(passMark[0]) + ", " + String.valueOf(passMark[1]));
Log.d("SuperShot", "Coordinate shot: " + String.valueOf(shotMark[0]) + ", " + String.valueOf(shotMark[1]));

click(passMark[0], passMark[1]);
}
};
}

private void click(int x, int y) {
Path path = new Path();
path.moveTo(x, y);

StrokeDescription clickStroke = new StrokeDescription(path, 0, 10);
Builder clickBuilder = new Builder();
clickBuilder.addStroke(clickStroke);
GestureDescription gesture = clickBuilder.build();
boolean result = this.dispatchGesture(gesture, null, null);
Log.d("SuperShot", String.valueOf(result));
}
}

В журналах метода click указано значение false, что означает, что sendGesture не смог завершить клик. Как можно решить эту проблему и с чем она может быть связана?
Manifest.xml:







config_accessibility_service.xml:




Подробнее здесь: https://stackoverflow.com/questions/781 ... urns-false

Вернуться в «JAVA»