我有一个任务,需要在给定的坐标模拟触摸/滑动事件,并且同时不影响用户交互(即需要同时进行编程模拟和用户触摸输入)。可以使用已经root过的手机。我尝试了以下方法,使用"SYSTEM_ALERT_WINDOW"和"Draw over the app"的帮助,但是无法实现:
1. 通过AccessibilityService -> dispatchGesture。但是AccessibilityService是同步的,只能处理任何一个事件(编程或用户)中的一个。参考:https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/accessibilityservice/AccessibilityService.java#L1017 2. Instrumentation.sendPointerSync -> 但是它需要INJECT_EVENT权限才能在其他应用程序上进行触摸,该权限仅适用于平台签名应用程序。
为了解决这个权限问题,将INJECT_EVENT权限状态更改为“instant”,并刷入自定义ROM。 仍然无法同时处理编程和用户触摸事件。
1. 通过AccessibilityService -> dispatchGesture。但是AccessibilityService是同步的,只能处理任何一个事件(编程或用户)中的一个。参考:https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/accessibilityservice/AccessibilityService.java#L1017 2. Instrumentation.sendPointerSync -> 但是它需要INJECT_EVENT权限才能在其他应用程序上进行触摸,该权限仅适用于平台签名应用程序。
为了解决这个权限问题,将INJECT_EVENT权限状态更改为“instant”,并刷入自定义ROM。 仍然无法同时处理编程和用户触摸事件。
- 在已经root的手机上尝试执行"/system/bin/input touchscreen swipe fromx,fromy,tox,toy,count",实际上就是"adb shell input touchscreen swipe"。仍然无法同时处理编程和用户触摸事件。
有没有办法通过编程模拟触摸而不影响用户交互?这可能吗?
提前感谢。