Android触摸事件被过滤掉了吗?

Android触摸事件被过滤掉了吗?,android,events,touch,Android,Events,Touch,我编写了一个Android应用程序,可以捕获所有触碰事件(例如,向下、向上、移动…),并将其转储到日志文件中 该应用程序可以以每秒1->5次触摸的速度与真实的人体触摸配合使用。但是,当我使用一个机械式触摸生成器以每秒100->500次触摸的速度运行时,日志文件显示的触摸次数比我实际生成的要少 在查看日志文件中记录的带有每个触摸事件时间戳的触摸之后,我发现应用程序捕获的事件模式非常奇怪。总是有两个相隔2毫秒的连续事件,然后是大约50毫秒后的另一个事件 例如: 第1个事件发生在第10毫秒 第二个事件

我编写了一个Android应用程序,可以捕获所有触碰事件(例如,向下、向上、移动…),并将其转储到日志文件中

该应用程序可以以每秒1->5次触摸的速度与真实的人体触摸配合使用。但是,当我使用一个机械式触摸生成器以每秒100->500次触摸的速度运行时,日志文件显示的触摸次数比我实际生成的要少

在查看日志文件中记录的带有每个触摸事件时间戳的触摸之后,我发现应用程序捕获的事件模式非常奇怪。总是有两个相隔2毫秒的连续事件,然后是大约50毫秒后的另一个事件

例如: 第1个事件发生在第10毫秒

第二个事件发生在第12毫秒,即第一个事件发生后2毫秒

第三个事件发生在第62毫秒,即第一个事件发生后50毫秒

第4个事件发生在第64毫秒,即第一个事件发生后2毫秒

然后下一个事件发生在104毫秒。。。然后是第106位。。。等等

我到处寻找这个问题,但运气不好。然而,我发现Android允许两次触摸,但不允许超过两次连续触摸。这意味着你可以有两个连续的触摸非常接近对方,但不超过2。我猜是屏幕驱动程序禁用了第三、第四。。。。即使触摸一段时间(很可能是50毫秒),直到它允许下一个事件再次发生。之所以这样做,是因为它假设人类不能触摸太快,这种触摸应该被禁用,并被视为错误/噪音。
请注意,这与多点触摸不同,因为我所说的连续事件发生在不同的时间点(即使这些时间点非常接近),速度非常快,而不是在多点触摸中同时发生多个触摸事件

请问是否有人知道为何会有这样的过滤机制?如果可能的话,如何禁用它们?我的目标是以尽可能高的速度记录尽可能多的触摸事件

如果有人能证实/证实我的假设或帮助我绕过安卓使用的过滤器,我将不胜感激


非常感谢您一直阅读到这一点:)

我不确定您是否找到了解决方案,但我最近遇到了同样的问题。我将堆栈跟踪打印到Logcat,指出有太多线程正在访问同一个日志文件(这很有意义,因为每次写入文件时,它都会自动在新线程上运行)。我的解决方案是简单地将所有日志放入几百个字符串的数组中,当数组达到其最大大小时,使用
StringBuilder
附加所有日志并将它们(一个线程)写入我的文件。这解决了我所有的问题。

Android处理触摸事件,尽可能多地在UI线程上做额外的工作。这个机械时间发生器是什么?从没听说过。你的观察和时间切片有什么关系吗?请记住,UI线程必须与其他线程共享CPU,而您的进程只是众多进程中的一个。我的机械触摸生成器只是一个带电容锤的旋转轮,高速敲击屏幕。当我在轮子上有5个锤子,并以每秒100圈的速度旋转轮子时,它将每秒产生500次触摸。你能解释更多关于设备处理事件的限制吗?顺便说一下,如果有帮助的话,我正在测试三星10.1 Galaxy标签。