前提:

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











Android(Linux)模拟按键、触摸屏等事件的更多相关文章

  1. android 实现模拟按键

    android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent ...

  2. Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使 ...

  3. android 模拟按键事件

    模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...

  4. android后台input命令模拟按键【转】

    本文转载自:http://www.cnblogs.com/sh1o2os/archive/2013/02/05/2893201.html 有时做开发时,我们使用的触摸屏没有虚拟按键(HOME.BACK ...

  5. Linux 模拟 鼠标 键盘 事件

    /************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...

  6. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

  7. Android编程 高德地图 中如何重写 定位按键 的触发事件 (com.amap.api.maps2d.LocationSource)点击定位后不仅定位在地图中心点上而且可以设置地图的缩放大小和提示

    在利用高德地图来编写自己的APP的时候,发现了一种对定位按键的重写方法,那就是利用   com.amap.api.maps2d.LocationSource  接口来重写. 什么是定位按键呢,下图中右 ...

  8. Android常用的物理按键及其触发事件

    Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可:当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用.不过,为了侦听这个 ...

  9. Android 命令行模拟按键

    /***************************************************************************** * Android 命令行模拟按键 * 说 ...

随机推荐

  1. Java-替换字符串中的子字符串

    自顶一个repace方法 package com.tj; public class MyClass implements Cloneable { public static void main(Str ...

  2. jquery插件编写【转载】

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  3. Python+unittest发送测试报告

    案例:将E:\Python_script\unittest\Test_Baidu生成的最新测试报告发送到指定邮箱. 我们将之前的unittest的报告生成和Python自动发送邮件结合在一起,就可以完 ...

  4. python jieba包用法总结

    # coding: utf-8 # ###jieba特性介绍 # 支持三种分词模式: # 精确模式,试图将句子最精确地切开,适合文本分析: # 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非 ...

  5. python3--命名空间字典

    命名空间字典 我们学到了模块的命名空间实际上是以字典的形式实现的,并且可以由内置属性__dict__显示这一点.类和实例对象也是如此:属性点号运算其实内部就是字典的索引运算,而属性继承其实就是搜索连结 ...

  6. 第一阶段Sprint 对其他团队评价

    咱们的team 针对对“小学生网页四则运算”这个产品的评审,本人提出建议:1.第一阶段的产品Sprint不够好,无任务看板.无燃尽图.希望完善该产品的的Sprint,第二阶段的Sprint要认真写好. ...

  7. BZOJ 3601 一个人的数论 ——莫比乌斯反演 高斯消元

    http://www.cnblogs.com/jianglangcaijin/p/4033399.html ——lych_cys 我还是太菜了,考虑一个函数的值得时候,首先考虑是否积性函数,不行的话就 ...

  8. 【DFS求树的最大二分匹配+输入外挂】HDU 6178 Monkeys

    http://acm.hdu.edu.cn/showproblem.php?pid=6178 [题意] 给定一棵有n个结点的树,现在有k个猴子分布在k个结点上,我们可以删去树上的一些边,使得k个猴子每 ...

  9. Yii 之控制器创建使用

    在根目录下的controllers目录下创建控制器HelloController.php: <?php namespace app\controllers; use yii\web\Contro ...

  10. web开发规范文档

    Web前端开发规范文档 规范目的: 使开发流程更加规范化. 通用规范: TAB键用两个空格代替(windos下tab键占四个空格,linux下TAB键占八个空格).  CSS样式属性或者JAVASCR ...