通过其他应用程序在android上模拟触摸事件,而不影响用户界面(使用root)

通过其他应用程序在android上模拟触摸事件,而不影响用户界面(使用root),android,android-ndk,adb,Android,Android Ndk,Adb,我有一项任务,比如,需要同时通过其他应用程序(在手机的任何屏幕上)在给定的协调下模拟触摸/刷卡事件,而不影响用户交互(比如编程模拟和用户触摸输入需要并行进行)。做一个有根的手机没关系 在“系统警报窗口”和“应用程序上方绘制”的帮助下,我尝试了以下方法,但未能实现 通过AccessibilityService->Dispatch手势。但是AccessibilityService是同步的,它可以一次处理任何一个事件(编程或用户) 参考: Instrumentation.sendPointerSyn

我有一项任务,比如,需要同时通过其他应用程序(在手机的任何屏幕上)在给定的协调下模拟触摸/刷卡事件,而不影响用户交互(比如编程模拟和用户触摸输入需要并行进行)。做一个有根的手机没关系

在“系统警报窗口”和“应用程序上方绘制”的帮助下,我尝试了以下方法,但未能实现

  • 通过AccessibilityService->Dispatch手势。但是AccessibilityService是同步的,它可以一次处理任何一个事件(编程或用户) 参考:

  • Instrumentation.sendPointerSync->但它需要INJECT_事件权限才能在其他应用程序上进行触摸,这仅适用于平台签名应用程序

  • 为了解决此权限问题,将INJECT_事件权限状态更改为“instant”,并刷新自定义ROM。 仍然无法同时处理编程和用户触摸事件

    参考:

  • 在根手机上,尝试执行“/系统/bin/输入触摸屏滑动fromx、fromy、tox、toy、count” 只不过是“adb外壳输入触摸屏滑动” 仍然无法同时处理编程和用户触摸事件
  • 有没有办法通过编程模拟触摸而不影响用户交互?可能吗


    提前感谢。

    如果设备是根设备,您可以扫描“/dev/input/eventXX”搜索触摸屏设备,然后将输入事件写入此“文件”。
    这并不容易(尤其是识别触摸屏使用的正确文件),但它可以工作。

    Hi,@emandt我也尝试过。像“adb shell getevent”一样,记录滑动并将该十六进制值转换为正常值,然后再次通过adb shell sendevent传递该值,该事件在用户交互过程中也已停止,并在用户触摸完成后恢复。它不是并行执行的。我应该承认,我从未尝试在用户物理使用触摸屏时向触摸屏发送假/虚拟事件……也许内核会优先考虑硬件事件,而不是同时使用两者。我认为没有任何其他方法(较低的代码)可以绕过这种内核行为。很抱歉