monkey源码分析之事件注入方法变化
在上一篇文章《Monkey源码分析之事件注入》中,我们看到了monkey在注入事件的时候用到了《Monkey源码分析番外篇之Android注入事件的三种方法比较》中的第一种方法,通过Internal API的WindowManager的injectKeyEvent之类的方法注入事件。这种方法在android api level 16也就是android4.1.2之后已经发生了变化:
- 在此之后注入事件的方式变成了使用InputManager的injectInputEvent方法了
- 而InputManager的getInstance和injectInputEvent等方法后来又变成了隐藏方法,具体哪个版本我没有去查,但起码我现在在看的Android 4.4.2是这样的
- 同样,uiautomator使用的注入事件方法用的也是InputManager的injectInputEvent的方法,这我想就是为什么UIAutomator只支持api level 16以后的android版本了
/* */ public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose)
/* */ {
/* 101 */ if (verbose > 1) { String note;
/* */ String note;
/* 103 */ if (this.mAction == 1) {
/* 104 */ note = "ACTION_UP";
/* */ } else {
/* 106 */ note = "ACTION_DOWN";
/* */ }
/* */ try
/* */ {
/* 110 */ System.out.println(":Sending Key (" + note + "): " + this.mKeyCode + " // " + MonkeySourceRandom.getKeyName(this.mKeyCode));
/* */ }
/* */ catch (ArrayIndexOutOfBoundsException e)
/* */ {
/* 114 */ System.out.println(":Sending Key (" + note + "): " + this.mKeyCode + " // Unknown key event");
/* */ }
/* */ }
/* */
/* */
/* 119 */ KeyEvent keyEvent = this.mKeyEvent;
/* 120 */ if (keyEvent == null) {
/* 121 */ long eventTime = this.mEventTime;
/* 122 */ if (eventTime <= 0L) {
/* 123 */ eventTime = SystemClock.uptimeMillis();
/* */ }
/* 125 */ long downTime = this.mDownTime;
/* 126 */ if (downTime <= 0L) {
/* 127 */ downTime = eventTime;
/* */ }
/* 129 */ keyEvent = new KeyEvent(downTime, eventTime, this.mAction, this.mKeyCode, this.mRepeatCount, this.mMetaState, this.mDeviceId, this.mScanCode, 8, 257);
/* */ }
/* */
/* */
/* 133 */ if (!InputManager.getInstance().injectInputEvent(keyEvent, 1))
/* */ {
/* 135 */ return 0;
/* */ }
/* 137 */ return 1;
/* */ }
/* */ }
可以看到最后的注入事件方法从原来的iwm.injectKeyEvent变成了现在的Inputmanager.getInstance().injectInputEvent方法了。
| 作者 | 自主博客 | 微信服务号及扫描码 | CSDN |
| 天地会珠海分舵 | http://techgogogo.com | 服务号:TechGoGoGo扫描码:![]() |
http://blog.csdn.net/zhubaitian |
monkey源码分析之事件注入方法变化的更多相关文章
- Monkey源码分析之事件注入
本系列的上一篇文章<Monkey源码分析之事件源>中我们描述了monkey是怎么从事件源取得命令,然后将命令转换成事件放到事件队列里面的,但是到现在位置我们还没有了解monkey里面的事件 ...
- monkey源代码分析之事件注入方法变化
在上一篇文章<Monkey源代码分析之事件注入>中.我们看到了monkey在注入事件的时候用到了<Monkey源代码分析番外篇之Android注入事件的三种方法比較>中的第一种 ...
- Monkey源码分析之事件源
上一篇文章<Monkey源码分析之运行流程>给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图给 ...
- Spring Ioc源码分析系列--自动注入循环依赖的处理
Spring Ioc源码分析系列--自动注入循环依赖的处理 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到Spring创建bean出现循环依赖的时候并没有深入去分 ...
- 安卓Monkey源码分析之运行流程
在<MonkeyRunner源码分析之与Android设备通讯方式>中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服 ...
- [Abp vNext 源码分析] - 3. 依赖注入与拦截器
一.简要说明 ABP vNext 框架在使用依赖注入服务的时候,是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包.这里与原来的 ABP 框架 ...
- Vue.js 源码分析(五) 基础篇 方法 methods属性详解
methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head&g ...
- [Abp vNext 源码分析] - 2. 模块系统的变化
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...
- lodash源码分析之去重--uniq方法
lodash.js包是node开发中常用的js工具包,里面有许多实用的方法,今天分析常用的一个去重方法---uniq 用法 _.uniq([2, 1, 2]) // => [2, 1] 源码包 ...
随机推荐
- mysql数据文件迁移到新的硬盘分区的方法
该系统增加了一个硬盘.要创建新的分区/data文件夹,mysql对于数据文件夹/var/lib/mysql 1. 停止mysql维修 [root@localhost~]# service mysql ...
- HDU 别easy在一系列的
别easy在一系列的 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Su ...
- 设计模式之前奏(UML类图)
原文:设计模式之前奏(UML类图) 本人菜菜一个,最近一直在博客园游走闲逛,看到了各种技术,各种各种…….便看到了大话设计模式这本书,下了电子版的看了看第一章,感觉相当不错,不仅通俗易懂,而且与实际案 ...
- VMWARE虚拟机无法访问的三种方法分析
bridged(桥接模式). NAT(网络地址转换模式) host-only(主机模式). 理论认识: 1.bridged(桥接模式) 在这个地方模式.虚拟机等同于网络内的一台物理主机,可对手动设置I ...
- Sphinx/Coreseek 4.1 跑 buildconf.sh 一个错误,无法生成configure档
安装前 coorseek 什么时候,遇到一些错误.该官方网站无法看到的解决方案,终于 google 在大牛的博客评论区找到一个解决方案.突然跑到他的膝盖介绍~~ 这里整理是为了方便一些人发现,墙毕竟让 ...
- NSIS脚本:更改壁纸
原文 NSIS脚本:更改壁纸 我们在制作主题安装包的时候,经常要进行自动更改壁纸的操作,其实用NSIS实现这一点非常简单.示例代码如下: 01 Name "更改壁纸" 02 Out ...
- 为什么 Linux Mint 比 Ubuntu好?
Linux Mint由Linux Mint Team团队于2006年开始发行,是一份基于Debian和Ubuntu的Linux发行版.其目标是提供一种更完整的即刻可用体验,这包括提供浏览器插件.多媒体 ...
- 单机部署redis主从备份
redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个red ...
- 正则获取URL参数
一 获取指定URL参数 function getUrlParams(name) { var reg = new RegExp("(^|&)" + name + " ...
- Nyoj 虚拟的城市之旅(bfs)
描述 展馆是未来城市的缩影,个人体验和互动是不变的主题.在A国展馆通过多维模式和高科技手段,引领参观者在展示空间踏上一段虚拟的城市之旅. 梦幻国有N个城市和M条道路,每条道路连接某两个城市.任意两 ...
