前言:最近在弄一个模拟用户点击屏幕的功能,并且不需要用户点击屏幕,后台自动给输入框赋值,类似pc端按键精灵的功能,在网上找了很多人的资料,写的都不是太详细,一知半解.还要自己慢慢研究.于是我这边写一篇博客整理出来,并且附上demo下载.

这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.c    使用这两个命令的前提是手机获取了root权限.

getevent可以获取用户的点击事件.

1).在cmd窗口中输入命令:adb shell getevent    (输入adb命令的时候一定要配置android sdk环境变量)

2).点击我们app的确定按钮.就会获取设备汇报的事件.

3).我们可以看到点击一个按钮产生了12行信息,代表12个事件.  我来解释第一行信息: [设备名称] [类型] [code] [value]

有哪些类型请参考博客:http://blog.csdn.net/kickxxx/article/details/7482392

/dev/input/event7: 0001 014a 00000001
/dev/input/event7: 0003 003a 00000001
/dev/input/event7: 0003 0035 00000172
/dev/input/event7: 0003 0036 00000129
/dev/input/event7: 0000 0002 00000000
/dev/input/event7: 0000 0000 00000000
/dev/input/event7: 0001 014a 00000000
/dev/input/event7: 0003 003a 00000000
/dev/input/event7: 0003 0035 00000172
/dev/input/event7: 0003 0036 00000129
/dev/input/event7: 0000 0002 00000000
/dev/input/event7: 0000 0000 00000000

sendEvent事件的使用

1).我们用getEvent获取的值是16进制的,而sendEvent输入的值是10进制的,我这里把这些值转换了,并且增加了前缀"adb shell sendevent".

adb shell sendevent /dev/input/event7 0001 330 00000001
adb shell sendevent /dev/input/event7 0003 58 00000001
adb shell sendevent /dev/input/event7 0003 0053 00000370
adb shell sendevent /dev/input/event7 0003 0054 00000297
adb shell sendevent /dev/input/event7 0000 0002 00000000
adb shell sendevent /dev/input/event7 0000 0000 00000000
adb shell sendevent /dev/input/event7 0001 0330 00000000
adb shell sendevent /dev/input/event7 0003 0058 00000000
adb shell sendevent /dev/input/event7 0003 0053 00000370
adb shell sendevent /dev/input/event7 0003 0054 00000297
adb shell sendevent /dev/input/event7 0000 0002 00000000
adb shell sendevent /dev/input/event7 0000 0000 00000000

2).我们看到上面最后面一栏中有370跟297两个数,这是是点击的坐标在屏幕的位置.如果我们用点击事件,只需要改变这两个值就可.

3).把这些命令复制到粘贴板,我们输入这些命令,效果图如下:

这里讲解了sendevent跟getevent的使用,如果我们要给输入框输入值,只需要一条命令就行.   adb shell input text 'ansen'

还有一些其他命令,参考博客:http://blog.sina.com.cn/s/blog_76550fd70101j2zs.html

接下来看代码如何实现这个功能.我们在android程序中可以执行shell命令.再次提醒需要root权限.我这边是软件启动延时三秒,执行点击事件点击输入框,然后给EditText赋值.

public class MainActivity extends Activity {
public final static String CLIECK_INPUT="" +
"sendevent /dev/input/event7 0001 330 00000001 \n " +
"sendevent /dev/input/event7 0003 58 00000001 \n" +
"sendevent /dev/input/event7 0003 53 00000159 \n" +
"sendevent /dev/input/event7 0003 54 00000186 \n" +
"sendevent /dev/input/event7 0000 0002 00000000 \n" +
"sendevent /dev/input/event7 0000 0000 00000000 \n" +
"sendevent /dev/input/event7 0001 330 00000000 \n" +
"sendevent /dev/input/event7 0003 58 00000000 \n" +
"sendevent /dev/input/event7 0003 53 00000159 \n" +
"sendevent /dev/input/event7 0003 54 00000186 \n" +
"sendevent /dev/input/event7 0000 0002 00000000 \n" +
"sendevent /dev/input/event7 0000 0000 00000000 \n sleep 2 m \n" +
" "; private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) { };
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); findViewById(R.id.confirm).setOnClickListener(clickListener); handler.postDelayed(new Runnable() {
@Override
public void run() {
execShell(CLIECK_INPUT);
execShell("input text 'ansen'");
}
}, 3000);
} private OnClickListener clickListener=new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "点击了确定按钮", 0).show();
}
}; public void execShell(String cmd) {
try {
Toast.makeText(MainActivity.this,"执行shell命令", 0).show();
// 权限设置
Process p = Runtime.getRuntime().exec("su");
// 获取输出流
OutputStream outputStream = p.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
// 将命令写入
dataOutputStream.writeBytes(cmd);
// 提交命令
dataOutputStream.flush();
// 关闭流操作
dataOutputStream.close();
outputStream.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
}

运行效果图如下:

点击下载源码

Android sendevent/getevent 用法的更多相关文章

  1. Android自动化 -- sendevent/getevent 用法

    getevent&sendevent 是android系统下的一个工具,可以 模拟 多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的ges ...

  2. 【Android学习】android:layout_weight的用法实例

    对于android:layout_weight的用法,用下面的例子来说明: <LinearLayout xmlns:android="http://schemas.android.co ...

  3. Android之Adapter用法总结-(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  4. Android之Adapter用法总结(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  5. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  6. Android之Adapter用法总结

    http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器 ...

  7. xamarin android viewpager的用法

    1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...

  8. Android开发PreferenceActivity 用法的代码

    将开发过程中常用的一些内容做个收藏,下面资料是关于Android开发PreferenceActivity 用法的内容,希望对大伙有一些用处.public class Setting extends P ...

  9. Android ContentProvider基本用法

    转自:https://www.jianshu.com/p/601086916c8f 一.基本概念 ContentProvider是Android系统中提供的专门用户不同应用间进行数据共享的组件,提供了 ...

随机推荐

  1. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  2. svn比对

    svn版本管理, 先要把你项目添加到svn版本管理中,添加完之后,文件夹就有一个绿色的勾,已经被svn进程管理了. 文件夹里面,每一层级,都有一个.svn文件夹,这个很重要,就是靠这个存放原有的文件, ...

  3. Dertouzos (5750)

    Dertouzos 题意: 就是给一个n和一个d,问有多少个小于n的数的最大因子是d. 分析: 如果一个数是质数,又和d互质,它们的乘积在范围内的话显然是满足条件的, 如果这个质数和d不互质,那么如果 ...

  4. java-JDBC登录注册代码

    登录: public static void main(String[] args) throws Exception{ Scanner sc = new Scanner(System.in); Sy ...

  5. POJ 2519

    又是一个水题?? 不过还是弄是很久... 在蒟蒻的路上越走越远 , 好了讲题 新生晚会 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  6. 对Java数组中去除重复项程序分析

    我作为一个Java菜鸟,只会用简单的办法来处理这个问题.如果有大神看到,请略过,感激不尽! 所以首先先分析这道题目:数组中重复的数据进行删除,并且要让数组里的数据按原来的顺序排列,中间不能留空. 既然 ...

  7. USACO翻译:USACO 2012 JAN三题(3)

    USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...

  8. daima

    # -*- coding: utf-8 -*- import theano import theano.tensor as T import numpy as np from sklearn impo ...

  9. 四则运算安卓客户端UI截图(部分)

    1.我们组安卓手机客户端UI设计主要由林培文同学负责,界面中用到的素材全部由他一人用PS制作,所以在素材来源上当属原创啦.正因为UI由一个人设计,同时他还得分担少量后台代码的编写,颇多的工作量与人才短 ...

  10. Window平台Grmon下如何使用gdb进行调试

    Window平台Grmon下如何使用gdb进行调试 1输入cmd命令,打开其窗口,进入你要执行的文件目录下 2.连接开发板,输入grmon –altjtag –u 3.连上后,输入gdb命令 4.再输 ...