- 浏览: 67248 次
- 性别:
- 来自: 杭州
文章分类
最新评论
通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:
* Socket编程:实现PC和Emulator通讯,并进行循环监听
* Service服务:将Socket的监听程序放在Service中,从而达到后台运行的目的。这里要说明的是启动服务有两种方式,bindService和startService,两者的区别是,前者会使启动的Service随着启动Service的Activity的消亡而消亡,而startService则不会这样,除非显式调用stopService,否则一直会在后台运行因为Service需要通过一个Activity来进行启动,所以采用startService更适合当前的情形
* Instrumentation发送键盘鼠标事件:Instrumentation提供了丰富的以send开头的函数接口来实现模拟键盘鼠标,如下所述:
sendCharacterSync(int keyCode) //用于发送指定KeyCode的按键
sendKeyDownUpSync(int key) //用于发送指定KeyCode的按键
sendPointerSync(MotionEvent event) //用于模拟Touch
sendStringSync(String text) //用于发送字符串
注意:以上函数必须通过Message的形式抛到Message队列中。如果直接进行调用加会导致程序崩溃。
对于Socket编程和Service网上有很多成功的范例,此文不再累述,下面着重介绍一下发送键盘鼠标模拟事件的代码:
1.发送键盘KeyCode:
步骤1. 声明类handler变量
private static Handler handler; |
步骤2. 循环处理Message
//在Activity的onCreate方法中对下列函数进行调用 private void createMessageHandleThread(){ //need start a thread to raise looper, otherwise it will be blocked Thread t = new Thread() { public void run() { Log.i( TAG,"Creating handler ..." ); Looper.prepare(); handler = new Handler(){ public void handleMessage(Message msg) { //process incoming messages here } }; Looper.loop(); Log.i( TAG, "Looper thread ends" ); } }; t.start(); } |
步骤3. 在接收到Socket中的传递信息后抛出Message
handler.post( new Runnable() { public void run() { Instrumentation inst=new Instrumentation(); inst.sendKeyDownUpSync(keyCode); } } ); |
2.Touch指定坐标,如下例子即touch point(240,400)
Instrumentation inst=new Instrumentation(); inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 240, 400, 0)); inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 240, 400, 0)); |
3.模拟滑动轨迹
将上述方法中间添加 MotionEvent.ACTION_MOVE
发表评论
-
Handler,Message和Looper(转)
2013-04-22 13:52 922一篇关于Handler的文章,写的非常详细,收藏! -
Android UI Pattern中的开源项目
2013-04-22 11:00 01. ListView 1.1 Refreshab ... -
AsyncTask
2013-04-18 20:57 853下面的内容翻译自 ... -
Intent机制
2013-04-16 21:51 0一天突然回过 -
AIDL跨进程调用学习笔记
2013-04-11 10:08 1654该学习笔记根据一个网友的例子整理而成。 ... -
AIDL学习笔记
2013-03-29 15:53 0双方的规划司法官 -
利用适配器构建Android界面布局(layout)
2013-03-22 10:26 747如果你的界面布局的内容是动态的或者不是预先设定的, ... -
如何调用Android系统图库中选择图片(转)
2013-03-06 15:27 1212如何调用Android系统图库中选择图片:点击 ... -
Android中ListView的优化
2012-12-10 10:39 0ListView... -
如何在Android项目中引入第三方JAR包
2012-11-18 14:04 6841.在项目的根目录下建立libs目录,然后将你需要的第三方JA ... -
在Android 工程中的 R.java 文件丢失后 ---如何重新生成
2012-03-07 19:24 791方法:右击你的工程(项目)——>Android Tool ... -
如何在一个Service中启动一个Activity
2012-03-10 11:12 1290Intent intent = new Intent(Serv ... -
Android Toast大全(五种情形)建立属于你自己的Toast
2012-03-13 11:51 603Toast用于向用户显示一些帮助/提示。下面我做了5中效 ... -
实现Android手机(服务端)与PC(客户端)实现通信
2012-03-13 15:07 1363本文在此基础上做了一 ... -
Android中如何使用WIFI来连接ADB
2012-04-01 17:00 705有的时候,我们限于种种原因,无法使用USB来连接设备进行调 ... -
Android_Launcher详解
2012-11-15 20:22 0Launcher的定义 -
Android中Activity,View,Window之间的关系
2012-11-15 19:45 31251.首先来看Activity中的attach()方法,在调用o ...
相关推荐
通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:Socket编程:实现PC和Emulator通讯,并进行循环监听Service服务:将Socket的监听程序放在Service中,从而达到后台运行的目的。...
博文源码《Android基于Socket无线遥控(2)--无线控制篇》 http://blog.csdn.net/zzp16/article/details/7939852 为Android系统添加模拟按键对外接口
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
参考博客 【Android中Hook Instrumentation 的实现】 http://blog.csdn.net/u012341052/article/details/71191409
android-support-multidex-instrumentation.jar.zip
经测试可以使用,效果不错。TreeGX效果不错。
android-support-multidex-instrumentation.jar android-support-multidex-instrumentation.jar
《AndroidStudio单元测试——instrumentation》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38060361
这只是个很简单demo程序,实现按键精灵原理,按照这种方法可以跨进程传递点击事件
9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再述模拟键盘鼠标事件(adb shell 实现) 334 9.87、反编译APK 344 9.88、更换APK图标(签名打包) 348 9.89、利用ANDROID MARKET赚钱 363 9.90...
9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再述模拟键盘鼠标事件(adb shell 实现) 334 9.87、反编译APK 344 9.88、更换APK图标(签名打包) 348 9.89、利用ANDROID MARKET赚钱 363 9.90...
Instrumentation提供了一系列以send开头的方法来实现模拟键盘事件,我们可以使用这些方法来模拟点击menu按钮的效果。下面是一个简单的示例代码: ```java myButton3.setOnClickListener(new Button.OnClickListener...
有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作了,这样的特性实际上提供了一种虚拟机级别支持的 AOP 实现方式,使得开发者无需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功能了...
Instrumentation可以把测试包和目标测试应用加载到同一个进程中运行。既然各个控件和测试代码都运行在同一个进程中了,测试代码当然就可以调用这些控件的方法了,同时修改和验证这些控件的一些数据
Iocomp.Instrumentation.WF40.Common.dll,Iocomp.Instrumentation.WF40.Pro Iocomp.WF40.OPC
在google remote中,android接收端接收socket发来的IR CODE,然后将IR CODE模拟出来发给系统处理,这就是google remote接收端的原理。 系统端怎样模拟input event呢? 方法一:通过Instrumentation....
主要介绍了Android中三种注入事件方法比较,本文分别讲解了使用内部APIs、使用instrumentation对象、直接注入事件到设备/dev/input/eventX等3种方法,需要的朋友可以参考下
基于 Java Instrumentation + Javaassist 的简单 RASP
使用instrumentation创建测试用例示例代码