亚行:阻力与通过事件刷卡/手动拖动

问题描述 投票:0回答:2

我想通过ADB编程方式控制Android设备。

因为我必须滚动列表,我试图通过类似的命令,以滚动:

adb shell input touchscreen swipe 935 500 789 500 1000

这工作,但问题是,Android的增加一扔/橡皮筋效果。因此,当刷卡完成后它仍然滚动远一点。但我需要scoll像素完美的,所以这种方法并不在我需要的方式工作。甚至当我增加了刷卡持续时间3000ms它滚动了一些更多的像素。

是否有可能一个简单的窍门,告诉ADB /我的设备“刷卡,但为了防止一扔效应释放手指之前500毫秒〜移动后,按住手指”?

我也试过是手动控制的事件。因此我跑adb getevent,在设备上执行的滑动和收集的输出:

[...]
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000fb
/dev/input/event6: 0003 0030 0000000a
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000fa
/dev/input/event6: 0003 0030 0000000b
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0036 000001b6
/dev/input/event6: 0003 0030 0000000c
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f9
/dev/input/event6: 0003 0030 0000000d
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f8
/dev/input/event6: 0003 0030 0000000e
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0035 000000f7
/dev/input/event6: 0003 0030 0000000f
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 0030 00000000
/dev/input/event6: 0003 0039 ffffffff
/dev/input/event6: 0000 0000 00000000
/dev/input/event6: 0003 002f 0000000c
/dev/input/event6: 0003 0039 0000000c
/dev/input/event6: 0003 0035 000000f7
/dev/input/event6: 0003 0036 000001b6
/dev/input/event6: 0000 0000 00000000

我想这应该告诉我,我的事件是/dev/input/event6,我认为我需要的事件代码003500360039

于是,我周围一点点,像有一种方法上来:

adb shell sendevent /dev/input/event6 3 53 935
adb shell sendevent /dev/input/event6  0 0 0
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6  0 0 0
adb shell sendevent /dev/input/event6 3 57 1
adb shell sendevent /dev/input/event6  0 0 0
adb shell sendevent /dev/input/event6 3 53 789
adb shell sendevent /dev/input/event6  0 0 0
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6  0 0 0
adb shell sendevent /dev/input/event6 3 57 0
adb shell sendevent /dev/input/event6  0 0 0

这也同样here完成。但它并没有在所有的工作,没有什么设备上的改变。因为我不知道下一步该怎么尝试,或者如果我的做法是正确的,在所有的,我想问你,如果你能告诉我,我的错误是。

谢谢!

android adb
2个回答
1
投票

问题是sendevent命令之间的延迟。如果检查sendevent源代码,这是每次打开文件,并写入,然后关闭。加上两个adb shell命令之间的延迟。这使得连续的SendEvent这么慢,你录制的内容是没有得到复制。

你所要做的就是让sendevent source code,修改它采取尽可能多的,因为它可以指定参数和里面你打开文件一次,每次解析3个ints和写,直到所有ARG游戏解析,关闭文件。你可以看到你记录什么是工作般的魅力。

默认的SendEvent

sendevent /dev/input/event1 3 47 0
sendevent /dev/input/event1 3 57 13578
sendevent /dev/input/event1 1 330 1
sendevent /dev/input/event1 1 325 1

修改的SendEvent

/data/local/tmp/mysendevent /dev/input/event1 3 47 0 3 57 13578 1 330 1 1 325 1

我做了这个相同的某个时候回来,你可以参考全面工作这里 - https://github.com/rils/ARP/wiki


0
投票

耶 - 我终于想通了,该怎么办呢!

我写了一个小脚本转换adb shell getevent为十进制值,并与来自this article知名的品牌替换代码。

这给了我输出是这样的:

/dev/input/event6: 3 - TRACKING_ID [4294967295]
/dev/input/event6: 0 - SYN_REPORT [0]
/dev/input/event6: 3 - 47 [0]
/dev/input/event6: 3 - POSITION_X [415]
/dev/input/event6: 3 - POSITION_Y [428]
/dev/input/event6: 3 - TOUCH_MAJOR [5]
/dev/input/event6: 3 - TRACKING_ID [0]
/dev/input/event6: 0 - SYN_REPORT [0]

然后,我能找出事件是如何工作的,并可以复制的行为。我只是需要改变X和Y坐标。

adb shell sendevent /dev/input/event6 3 57 88
adb shell sendevent /dev/input/event6 3 53 935
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 5
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 906
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 16
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 877
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 16
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 847
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 16
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 818
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 16
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 53 789
adb shell sendevent /dev/input/event6 3 54 500
adb shell sendevent /dev/input/event6 3 48 16
adb shell sendevent /dev/input/event6 0 0 0
adb shell sendevent /dev/input/event6 3 57 -1
adb shell sendevent /dev/input/event6 0 0 0
© www.soinside.com 2019 - 2024. All rights reserved.