Como simular de forma confiável eventos de toque no Android sem raiz (como Automatizar e Tasker)?

Como simular de forma confiável eventos de toque no Android (sem root) do Java fora do meu aplicativo que é executado como um serviço em segundo plano?

Embora essa pergunta já tenha sido feita antes,a maioria das respostas utiliza ADB. (tal comoComo simular eventos de toque no dispositivo Android?)

https://github.com/chetbox/android-mouse-cursor oferece uma boa solução usando Acessibilidade, mas não é muito confiável, pois nem todas as visualizações respondem a ela, e os jogos não respondem a maior parte do tempo.

private void click() {
  AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
  if (nodeInfo == null) return;

  AccessibilityNodeInfo nearestNodeToMouse = findSmallestNodeAtPoint(nodeInfo, cursorLayout.x, cursorLayout.y + 50);

  if (nearestNodeToMouse != null) {
    logNodeHierachy(nearestNodeToMouse, 0);
    nearestNodeToMouse.performAction(AccessibilityNodeInfo.ACTION_CLICK);
  }

  nodeInfo.recycle();
}

Este é o código atual usado porhttps://github.com/chetbox/android-mouse-cursor.

Versão do Android é 8.0, estoque Android

Existe uma maneira melhor e mais confiável de simular esses eventos de toque do Java? Desde já, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion