模拟Android多点触控

本文介绍了在Android模拟器上实现多点触控的两种方法:通过adb shell input命令和adb shell sendevent命令。第一种方法由于阻塞式调用无法实现真正多点触控,第二种方法通过解析和模拟事件可以实现多点操作,例如双指滑动和缩放。
摘要由CSDN通过智能技术生成

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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值