- 浏览: 70451 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
通过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 1059一篇关于Handler的文章,写的非常详细,收藏! -
Android UI Pattern中的开源项目
2013-04-22 11:00 01. ListView 1.1 Refreshab ... -
AsyncTask
2013-04-18 20:57 892下面的内容翻译自 ... -
Intent机制
2013-04-16 21:51 0一天突然回过 -
AIDL跨进程调用学习笔记
2013-04-11 10:08 1719该学习笔记根据一个网友的例子整理而成。 ... -
AIDL学习笔记
2013-03-29 15:53 0双方的规划司法官 -
利用适配器构建Android界面布局(layout)
2013-03-22 10:26 803如果你的界面布局的内容是动态的或者不是预先设定的, ... -
如何调用Android系统图库中选择图片(转)
2013-03-06 15:27 1339如何调用Android系统图库中选择图片:点击 ... -
Android中ListView的优化
2012-12-10 10:39 0ListView... -
如何在Android项目中引入第三方JAR包
2012-11-18 14:04 7311.在项目的根目录下建立libs目录,然后将你需要的第三方JA ... -
在Android 工程中的 R.java 文件丢失后 ---如何重新生成
2012-03-07 19:24 856方法:右击你的工程(项目)——>Android Tool ... -
如何在一个Service中启动一个Activity
2012-03-10 11:12 1359Intent intent = new Intent(Serv ... -
Android Toast大全(五种情形)建立属于你自己的Toast
2012-03-13 11:51 645Toast用于向用户显示一些帮助/提示。下面我做了5中效 ... -
实现Android手机(服务端)与PC(客户端)实现通信
2012-03-13 15:07 1414本文在此基础上做了一 ... -
Android中如何使用WIFI来连接ADB
2012-04-01 17:00 755有的时候,我们限于种种原因,无法使用USB来连接设备进行调 ... -
Android_Launcher详解
2012-11-15 20:22 0Launcher的定义 -
Android中Activity,View,Window之间的关系
2012-11-15 19:45 31861.首先来看Activity中的attach()方法,在调用o ...
相关推荐
首先,模拟键盘鼠标事件通常涉及三个关键部分: 1. **Socket编程**:这是实现PC与Android模拟器或设备之间通信的基础。通过创建Socket连接,我们可以将来自PC的指令发送到Android设备上,指示它执行特定的键盘或...
6. **模拟键盘鼠标事件**: - **Socket+Instrumentation实现**:通过网络连接发送键盘和鼠标事件,适用于远程控制或自动化测试场景。 - **adb shell实现**:利用ADB命令行工具直接发送输入事件,方便开发者在没有...
通过Socket+Instrumentation或adb shell,可以模拟用户输入,实现模拟键盘鼠标事件。 5. **背景图片适应不同手机分辨率**: - 为适配不同屏幕尺寸和密度,开发者应提供不同尺寸的资源文件,遵循Android的密度独立...
- **模拟键盘鼠标事件**:通过Socket+Instrumentation或adb shell命令,可以模拟用户输入,例如点击、滑动等。 5. **背景图片迎合不同手机分辨率的问题** - 为适应不同分辨率的设备,开发者应提供多个密度(ldpi,...
##### 模拟键盘鼠标事件 实现自动化测试的一个关键步骤是能够模拟用户输入,如键盘和鼠标事件。这可以通过以下两种方式实现: 1. **Socket+Instrumentation实现**:通过网络连接,使用Instrumentation框架发送模拟...
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...