如何在Android上可靠地模拟触摸事件(不需要Root权限),并使其在我的后台服务之外的Java应用程序中运行?
虽然此问题以前已经被问过,但是大多数答案都使用ADB (例如 如何在Android设备上模拟触摸事件?)。
https://github.com/chetbox/android-mouse-cursor使用无障碍功能提供了一个很好的解决方案,但是它并不是非常可靠,因为并不是所有视图都对其做出响应,并且大部分时间游戏根本没有反应。
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();
}
Android版本为8.0,原生安卓系统。
有没有更好、更可靠的方法来从Java模拟这些触摸事件?先感谢了!