[BUG]快速点击时失效
Describe the bug / 问题描述
点击失效:
在某些情况下(快速点击),TouchEventTracker 解析当前触摸事件时通过 cmdLine.readUntilSomething() 拿到的 getEvent 输出有莫名其妙的多余的换行符。
导致 doContentParse() 时以回车为分割符分离出的 lines (String[] lines = result.split("\n");)变得破碎。
举例:
正常情况应该得到如下的 lines:
[ 528400.942517] /dev/input/event4: EV_ABS ABS_MT_TRACKING_ID 00008a1a
[ 528400.942517] /dev/input/event4: EV_KEY BTN_TOUCH DOWN
[ 528400.947728] /dev/input/event4: EV_ABS ABS_MT_POSITION_X 0000040a
[ 528400.942517] /dev/input/event4: EV_ABS ABS_MT_TRACKING_ID 00008a1a
[ 528400.942517] /dev/input/event4: EV_KEY BTN_TOUCH DOWN
[ 528400.947728] /dev/input/event4: EV_ABS ABS_MT_POSITION_X 0000040a
异常情况下:
[ 528400.942517] /dev/input/event4: EV_ABS ABS_MT_TRACKING_ID 00008a1a
[ 528400.942517] /dev/input/event4:
EV_KEY
BTN_TOUCH DOWN
[ 528400.947728] /dev/input/event4: EV_ABS
ABS_MT_POSITION_X 0000040a
这样会导致对每个 line 解析时异常,因此涉及到 BTN_TOUCH DOWN、 ABS_MT_POSITION_X/Y 等最终没能消费成功。
此外,还会引起 getEventMicroSecond() 中 content = content.split("\\[")[1].replace(".", "");数组越界异常。
To Reproduce / 复现流程 举个复现的例子: 点击某处,唤出 Node 的 FunctionView 。 点击窗口之外取消弹窗后迅速点击,尝试唤出 FunctionView,此时就会失败(也就是不会弹出 FunctionView)
Device Info / 设备信息
- Manufacturer/生产厂家: 小米
- Device/设备: 小米 10
- OS/系统版本: 基于 Android 10 的 MIUI 12.0.1
- SoloPi Version/SoloPi版本 [e.g. 0.10.1]
Additional context/其他内容
不知道这个是不是 Adblib 的 bug,多次测试发现只出现在快速点击的情况下(已经排除掉 SoloPI 主动过滤短时间重复点击的逻辑)。 此外,Minicap 在基于 Android 9 和 Android 10 的 MIUI 上截图必然失败,不考虑个降级方案吗? screencap 啥的
getevent解析时,由于目前是没半秒钟读取一次并解析, 所以可能导致上文出现的断行情况,这点预计下个版本修复。 第二点之前考虑通过screencap截图,但执行速度还是有些慢的,关于MIUI截图失败的问题,我们也在找另外的截图形式,可以继续关注下github发布信息。