- 浏览: 68826 次
- 性别:
- 来自: 杭州
文章分类
最新评论
通过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 997一篇关于Handler的文章,写的非常详细,收藏! -
Android UI Pattern中的开源项目
2013-04-22 11:00 01. ListView 1.1 Refreshab ... -
AsyncTask
2013-04-18 20:57 874下面的内容翻译自 ... -
Intent机制
2013-04-16 21:51 0一天突然回过 -
AIDL跨进程调用学习笔记
2013-04-11 10:08 1691该学习笔记根据一个网友的例子整理而成。 ... -
AIDL学习笔记
2013-03-29 15:53 0双方的规划司法官 -
利用适配器构建Android界面布局(layout)
2013-03-22 10:26 777如果你的界面布局的内容是动态的或者不是预先设定的, ... -
如何调用Android系统图库中选择图片(转)
2013-03-06 15:27 1266如何调用Android系统图库中选择图片:点击 ... -
Android中ListView的优化
2012-12-10 10:39 0ListView... -
如何在Android项目中引入第三方JAR包
2012-11-18 14:04 7071.在项目的根目录下建立libs目录,然后将你需要的第三方JA ... -
在Android 工程中的 R.java 文件丢失后 ---如何重新生成
2012-03-07 19:24 813方法:右击你的工程(项目)——>Android Tool ... -
如何在一个Service中启动一个Activity
2012-03-10 11:12 1321Intent intent = new Intent(Serv ... -
Android Toast大全(五种情形)建立属于你自己的Toast
2012-03-13 11:51 627Toast用于向用户显示一些帮助/提示。下面我做了5中效 ... -
实现Android手机(服务端)与PC(客户端)实现通信
2012-03-13 15:07 1387本文在此基础上做了一 ... -
Android中如何使用WIFI来连接ADB
2012-04-01 17:00 728有的时候,我们限于种种原因,无法使用USB来连接设备进行调 ... -
Android_Launcher详解
2012-11-15 20:22 0Launcher的定义 -
Android中Activity,View,Window之间的关系
2012-11-15 19:45 31541.首先来看Activity中的attach()方法,在调用o ...
相关推荐
首先,模拟键盘鼠标事件通常涉及三个关键部分: 1. **Socket编程**:这是实现PC与Android模拟器或设备之间通信的基础。通过创建Socket连接,我们可以将来自PC的指令发送到Android设备上,指示它执行特定的键盘或...
Instrumentation组件则提供了一组仪表盘控件,包括各种模拟和数字仪表,如指针式表盘、数字显示屏、滑块等,这些控件常用于监控或控制应用中的数值状态。开发者可以利用这些控件创建实时数据监控界面,提升应用程序...
在Android开发中,有时我们需要模拟按键事件,例如创建一个手机遥控器应用,就需要在不同的进程中发送按键事件。本文将详细讲解如何实现Android跨进程模拟按键(KeyEvent)。 首先,我们来看一个基本的发送按键事件...
要实现模拟按键发送短信,你需要获取到短信应用的`Activity`实例,然后模拟按键操作。以下是一个基本的流程: - 获取短信应用的`Intent`:`Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text...
博文源码《Android基于Socket无线遥控(2)--无线控制篇》 http://blog.csdn.net/zzp16/article/details/7939852 为Android系统添加模拟按键对外接口
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
在实际开发中,除了直接Hook Instrumentation,还可以利用像Xposed框架这样的第三方工具,它们提供了更方便的方式来实现对Android系统的Hook,无需替换系统Instrumentation。然而,Xposed框架需要在系统层面安装,...
"android-support-multidex-instrumentation.jar.zip" 是一个包含 Android Support Library 多 dex 支持中的 instrumentation 组件的压缩包文件。 首先,我们来理解一下“multidex”。在Android 5.0(API级别21)...
综上所述,实现Android的按键精灵需要理解并运用`MotionEvent`来模拟触摸操作,利用AIDL进行跨进程通信,以及可能需要线程和定时器来协调操作的执行。这个DEMO程序"clickdemo"可能就包含这些关键部分的实现,通过...
本文将深入探讨如何在Android环境中实现模拟点击,以及相关的技术与工具。 首先,Android SDK提供了一个名为`Instrumentation`的类,它是进行应用自动化测试的核心组件。通过`Instrumentation`,我们可以直接操控UI...
这个框架允许我们编写测试脚本来模拟用户的手势操作,实现对应用程序UI元素的精确控制,类似于触摸精灵或按键精灵。本文将深入探讨基于UiAutomator的自动模拟用户手势操作。 首先,我们需要理解什么是UiAutomator。...
6. **模拟键盘鼠标事件**: - **Socket+Instrumentation实现**:通过网络连接发送键盘和鼠标事件,适用于远程控制或自动化测试场景。 - **adb shell实现**:利用ADB命令行工具直接发送输入事件,方便开发者在没有...
总结起来,这篇文章主要介绍了如何在Android应用中模拟发送返回键值(KEYCODE_BACK)的两种方法:使用`Instrumentation`和通过`Runtime.exec()`执行命令行操作。同时,也解释了相关权限`INJECT_EVENTS`的实际应用...
android-support-multidex-instrumentation.jar android-support-multidex-instrumentation.jar
《AndroidStudio单元测试——instrumentation》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38060361
在Android系统中,有时我们需要模拟用户输入事件,例如在自动化测试或者特定功能实现时。本文主要探讨了三种在Android中注入事件的方法:使用内部APIs、使用`Instrumentation`对象以及直接向设备的`/dev/input/...
触摸按键模拟在Android中通常通过发送MotionEvent事件来实现。MotionEvent是Android用于表示触摸屏事件的对象,它包含了按下、移动和释放等动作的信息。开发者可以通过Instrumentation类的sendPointerSync()方法来...
总之,Android平台提供了多种方式来模拟按键控制,包括使用`KeyEvent`处理按键事件,通过`MotionEvent`模拟触摸操作,以及利用`Instrumentation`和`UiAutomation`进行自动化测试。理解和熟练掌握这些方法对于Android...