前提:

在我们应用程序或者在写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:
<none>
...

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

(2)命令:getevent -t /dev/input/event9 (getevent -l /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











最新文章

  1. 访问图片可以使用闭包map
  2. Java Hour 21 Weather
  3. iOS 进阶 第八天(0407)
  4. 创建一个基本的Windows应用程序
  5. 我的Linux学习历程:那些我看过的Linux书籍们
  6. 通过httplib2 探索的学习的最佳方式
  7. php ueditor 后台配置项返回格式出错,上传功能将不能正常使用!
  8. C++——函数重载
  9. bzoj3038上帝造题的七分钟2
  10. PC逆向之代码还原技术,第三讲汇编中加法的代码还原
  11. Apollo 代码的编译演示
  12. js基础系列之【作用域】
  13. 2017.4.9 函数式编程FP
  14. Webservice之axis
  15. android 的几个黄色警告解决办法(转)
  16. vue全局组件和局部组件
  17. B - Bridging signals (LIS)
  18. Hadoop Trash回收站使用指南
  19. R语言基础入门之二:数据导入和描述统计
  20. STL容器迭代器失效问题讨论

热门文章

  1. Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的
  2. 【UML】9种图+包图
  3. [BZOJ1574] [Usaco2009 Jan]地震损坏Damage(贪心 + dfs)
  4. 刷题总结——切蛋糕(ssoj)
  5. 【HDOJ5952】Counting Cliques(团,dfs)
  6. 标准C程序设计七---27
  7. 什么是 Linux 发行版
  8. ZOJ - 4016 Mergeable Stack (STL 双向链表)
  9. 使用ftrace学习linux内核函数调用
  10. android 打开浏览器指定网页