Android多点触控
多点触控实现思路
经过资料的查询,要在Android模拟器上实现多点触控,滑动等操作,主要有两种思路:
- 一是通过adb shell input swipe 来模拟手指滑动,实现多点触控;
- 二是先通过adb shell getevent来获取用户多点触控事件的event,进行解析之后,用adb shell sendevent 来模拟用户的操作;
第一种adb shell input方式
对第一种方法进行试验,发现adb shell input 命令是阻塞式调用的,第一条命令开始执行后,等到命令执行完后返回,第二条命令才开始执行,比如,我们用两条adb命令:
adb shell input swipe 100 100 300 300 1000
adb shell input swipe 200 200 100 100 800
则展示出来的结果是,用户先在坐标100 100到300 300上进行了一次1000ms的滑动,之后又在200 200到100 100上进行了一次800ms的滑动,因此,第一种方式不能很好地模拟多点触控方式。
第二种adb shell sendevent方式
之后开始对第二种思路进行试验,这里采用的环境是Genymotion 2.5.2下的Android 4.2.2版本的nexus 4虚拟机。
首先我们要用adb shell getevent
来对目标虚拟机进行事件监听。在genymotion中,所有操作都被封装在 /dev/input/event7中,然后我对事件进行了解析,部分结果如下:
//按下
/dev/input/event7: 0001 014a 00000001
/dev/input/event7: 0003 003a 00000001
/dev/input/event7: 0003 0035 00000122
/dev/input/event7: 0003 0036 000001d5
/dev/input/event7: 0000 0002 00000000
/dev/input/event7: 0000 0000 00000000
//松开
/dev/input/event7: 0001 014a 00000000
/dev/input/event7: 0003 003a 00000000
/dev/input/event7: 0003 0035 00000122
/dev/input/event7: 0003 0036 000001d5
/dev/in