`

Android 模拟键盘鼠标事件(Socket+Instrumentation实现)

阅读更多

通过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

分享到:
评论

相关推荐

    浅析Android 模拟键盘鼠标事件

    首先,模拟键盘鼠标事件通常涉及三个关键部分: 1. **Socket编程**:这是实现PC与Android模拟器或设备之间通信的基础。通过创建Socket连接,我们可以将来自PC的指令发送到Android设备上,指示它执行特定的键盘或...

    DevComponents.DotNetBar9.0 + TreeGX + Instrumentation

    Instrumentation组件则提供了一组仪表盘控件,包括各种模拟和数字仪表,如指针式表盘、数字显示屏、滑块等,这些控件常用于监控或控制应用中的数值状态。开发者可以利用这些控件创建实时数据监控界面,提升应用程序...

    android模拟按键发送消息

    要实现模拟按键发送短信,你需要获取到短信应用的`Activity`实例,然后模拟按键操作。以下是一个基本的流程: - 获取短信应用的`Intent`:`Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text...

    Android系统模拟触摸按键

    博文源码《Android基于Socket无线遥控(2)--无线控制篇》 http://blog.csdn.net/zzp16/article/details/7939852 为Android系统添加模拟按键对外接口

    Android 跨进程模拟按键(KeyEvent )实例详解

    在Android开发中,有时我们需要模拟按键事件,例如创建一个手机遥控器应用,就需要在不同的进程中发送按键事件。本文将详细讲解如何实现Android跨进程模拟按键(KeyEvent)。 首先,我们来看一个基本的发送按键事件...

    Android单元测试初探——Instrumentation

    学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...

    Android中Hook Instrumentation 的实现

    在实际开发中,除了直接Hook Instrumentation,还可以利用像Xposed框架这样的第三方工具,它们提供了更方便的方式来实现对Android系统的Hook,无需替换系统Instrumentation。然而,Xposed框架需要在系统层面安装,...

    android-support-multidex-instrumentation.jar.zip

    "android-support-multidex-instrumentation.jar.zip" 是一个包含 Android Support Library 多 dex 支持中的 instrumentation 组件的压缩包文件。 首先,我们来理解一下“multidex”。在Android 5.0(API级别21)...

    android实现按键精灵

    综上所述,实现Android的按键精灵需要理解并运用`MotionEvent`来模拟触摸操作,利用AIDL进行跨进程通信,以及可能需要线程和定时器来协调操作的执行。这个DEMO程序"clickdemo"可能就包含这些关键部分的实现,通过...

    android模拟点击实现

    本文将深入探讨如何在Android环境中实现模拟点击,以及相关的技术与工具。 首先,Android SDK提供了一个名为`Instrumentation`的类,它是进行应用自动化测试的核心组件。通过`Instrumentation`,我们可以直接操控UI...

    Android-基于UiAutomator框架自动模拟用户手势操作类似于触摸精灵按键精灵

    这个框架允许我们编写测试脚本来模拟用户的手势操作,实现对应用程序UI元素的精确控制,类似于触摸精灵或按键精灵。本文将深入探讨基于UiAutomator的自动模拟用户手势操作。 首先,我们需要理解什么是UiAutomator。...

    Android开发技巧总汇——(2).pdf

    6. **模拟键盘鼠标事件**: - **Socket+Instrumentation实现**:通过网络连接发送键盘和鼠标事件,适用于远程控制或自动化测试场景。 - **adb shell实现**:利用ADB命令行工具直接发送输入事件,方便开发者在没有...

    安卓模拟系统发送返回键值(KEYCODE_BACK)(csdn)————程序.pdf

    总结起来,这篇文章主要介绍了如何在Android应用中模拟发送返回键值(KEYCODE_BACK)的两种方法:使用`Instrumentation`和通过`Runtime.exec()`执行命令行操作。同时,也解释了相关权限`INJECT_EVENTS`的实际应用...

    android-support-multidex-instrumentation.jar

    android-support-multidex-instrumentation.jar android-support-multidex-instrumentation.jar

    源码

    《AndroidStudio单元测试——instrumentation》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/38060361

    Android中三种注入事件方法比较

    在Android系统中,有时我们需要模拟用户输入事件,例如在自动化测试或者特定功能实现时。本文主要探讨了三种在Android中注入事件的方法:使用内部APIs、使用`Instrumentation`对象以及直接向设备的`/dev/input/...

    android下触摸按键模拟截屏取色

    触摸按键模拟在Android中通常通过发送MotionEvent事件来实现。MotionEvent是Android用于表示触摸屏事件的对象,它包含了按下、移动和释放等动作的信息。开发者可以通过Instrumentation类的sendPointerSync()方法来...

    android客户端模拟按键

    总之,Android平台提供了多种方式来模拟按键控制,包括使用`KeyEvent`处理按键事件,通过`MotionEvent`模拟触摸操作,以及利用`Instrumentation`和`UiAutomation`进行自动化测试。理解和熟练掌握这些方法对于Android...

Global site tag (gtag.js) - Google Analytics