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:
<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)模拟按键、触摸屏等事件的更多相关文章
- android 实现模拟按键
android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent ...
- Android随笔之——模拟按键操作的几种方式
前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使 ...
- android 模拟按键事件
模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...
- android后台input命令模拟按键【转】
本文转载自:http://www.cnblogs.com/sh1o2os/archive/2013/02/05/2893201.html 有时做开发时,我们使用的触摸屏没有虚拟按键(HOME.BACK ...
- Linux 模拟 鼠标 键盘 事件
/************************************************************************ * Linux 模拟 鼠标 键盘 事件 * 说明: ...
- linux下如何模拟按键输入和模拟鼠标【转】
转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...
- Android编程 高德地图 中如何重写 定位按键 的触发事件 (com.amap.api.maps2d.LocationSource)点击定位后不仅定位在地图中心点上而且可以设置地图的缩放大小和提示
在利用高德地图来编写自己的APP的时候,发现了一种对定位按键的重写方法,那就是利用 com.amap.api.maps2d.LocationSource 接口来重写. 什么是定位按键呢,下图中右 ...
- Android常用的物理按键及其触发事件
Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可:当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用.不过,为了侦听这个 ...
- Android 命令行模拟按键
/***************************************************************************** * Android 命令行模拟按键 * 说 ...
随机推荐
- 【LeetCode】Grid Illumination(网格照明)
这道题是LeetCode里的第1001道题. 题目要求: 在 N x N 的网格上,每个单元格 (x, y) 上都有一盏灯,其中 0 <= x < N 且 0 <= y < N ...
- Windows同步阿里云时间
Ctrl+R打开cmd命令框 输入:gpedit.msc 计算机配置”—“管理模版”—“系统”—“Windows 时间服务”—“时间提供程序”—“配置 Windows NTP 客户端 双击打开配置 W ...
- 刷题总结——spoj1812(后缀自动机+DP)
题目: A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is t ...
- 转 CListCtrl::InsertColumn、InsertItem、SetItemText;
将数据写入到CListCtrl 向CListCtrl中写入数据,一般使用3个成员方法: CListCtrl::InsertColumn; CListCtrl::InsertItem; CListCtr ...
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
- gcc/g++ 编译时出现:“对’xxxx’未定义的引用,collect2: error: ld returned 1 exit status” 的错误
出现的问题: 在使用 make 编译实现一个程序时,出现了下面的错误.查看程序源文件所在的目录时发现程序已经完成了编译,并生成了 list_repo.o 的文件,说明是在程序链接生成可执行文件时发生了 ...
- C 语言中的 feof()函数
功能: feof 是 C 语言标准库函数函数,其原型在 stdio.h 中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0,文件结束符只能被 clearerr() 清除. 用法: ...
- 使用反射获取类中的属性(可用于动态返回PO类的列,当做表格的表头)
//利用反射取类中的属性字段 try { Class clazz = Class.forName("houji.bean.model.TaskModel"); Field[] fi ...
- 【angularjs学习】简单的语法
<div ng-app="" ng-init="names=[{name:'Jani',country:'Norway'},{name:'Hege',country ...
- ReSharper7.1.25.234 注册机
经常用vs做开发的人都知道,ReSharper是vistual studio必备插件之一.他的智能提示,智能感知,.net底层方法查看,测试等都非常方便,给程序员带来了巨大的效率. 但众所周知ReSh ...