Linux程序之触摸,Android(Linux)模拟按键、触摸屏等事件

前提:

在我们应用程序或者在写Android自动化测试时候常常会需要模拟实体按键,来给我们做测试用。这也是我要整理的目的。主要的涉及的是Linux Input Event事件。以下的例子基于Android 5.1(Linux-3.10)。

一、利用getevent、sendevent模拟按键

(1)命令:getevent -t

结果:

...

add device 6: /dev/input/event9

bus: 0000

vendor 0000

product 0000

version 0000

name: "msm8994-snd-card Button Jack"

location: "ALSA"

id: ""

version: 1.0.1

events:

KEY (0001): 0100 0101 0102 0103 0104 0105 0106 0107

input props:

...

得知:我们所要的耳机按键的对应的input事件是event9。

(2)命令:getevent -t /dev/input/event9,使用按耳机按键预先获取耳机事件信息

结果:

按键按下:

0001 00e2 00000001

0000 0000 00000000

松下按键:

0001 00e2 00000000

0000 0000 00000000

(3)使用sendevent命令模拟触发线控按键事件

sendevent /dev/input/event9 0001 00e2 00000001

sendevent /dev/input/event9 0000 0000 00000000

**这个之间要延时500ms~1s,不然会被系统误认为是误触发的**

sendevent /dev/input/event9 0001 00e2 00000000

sendevent /dev/input/event9 0000 0000 00000000

注:只要是input的事件都是可以用sendevent来模拟,但有时候就力不从心了如模拟触摸屏的滑动,如果用sendevent就需要大量的命令来模拟。这时可以用input命令来代替。

二、利用input命令实现模拟按键、触摸屏操作

(1)模拟按键

命令:input keyevent {键值}

已知Android手机音量+(KEYCODE_VOLUME_UP)的键值是24,那使用

input keyevent 24就可模拟按下音量+键。更多的键值见附件1。

(2)模拟触摸屏操作(点按、滑动)

命令:input swipe {起始点x轴值} {起始点y轴值} {终点x轴值} {终点y轴值} {滑动时间[可忽略]},时间单位:ms

例如:从x=100,y=500,滑到x=600,y=500,时间100ms

input swipe 100 500 600 500 100

命令:input tap {x轴值} {y轴值}

例如:点击x=100,y=500这个点,模拟点击APP图标打开应用

input tap 100 500

附件1

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值