android 实现按键精灵
来源:互联网 发布:软件架构总结 二 编辑:程序博客网 时间:2024/04/29 10:52
转载文章请注明出处:http://blog.csdn.net/dangxw_/article/details/17960571
程序经常需要调试,需要程序自动按键,或者某些繁琐操作,比如游戏外挂,需要按键精灵来完成。
android 提供给开发者发送模拟按键的类Instrumentation:
Instrumentation
extends Object可以模拟发送很多事件(这些方法写在thread类里,所以部分带有thread的sleep方法):
发送back事件:
private void back(){inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);}发送enter事件:(在keyevent中有很多按键码,该方法可以发送任何按键的事件)
private void enter() throws InterruptedException
{inst.sendKeyDownUpSync(KeyEvent.KEYCODE_NUMPAD_ENTER);sleep(500);}
根据坐标点发送点击事件:
private void click(int x ,int y) throws InterruptedException{inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0));sleep(500);inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0));}
根据坐标发送长按事件:
private void longClick(int x, int y) throws InterruptedException{inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0));sleep(2000);inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0));}
发送向下事件:
private void move() throws InterruptedException{inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);sleep(500);inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);sleep(500);}发送move移动事件:
其实我感觉还是应该发送坐标点事件,只是把down和up之间发送部分move但是我实现起来却没有达到我想要移动的距离的效果,不贴出代码了,有点错误,期待阅读者的意见
但是这些代码的运行,需要给出
<uses-permission android:name = "android.permission.INJECT_EVENTS"/>
权限。
而且需要系统权限:android:sharedUserId="android.uid.system"
另外使用的手机必须root ,还要获取系统签名。
获取系统签名的具体步骤明天写吧。
写了一个demo 程序,传递一个简单的点击事件,这种方法可以实现跨进程点击,就是可以在后台发送点击事件,点击其他软件的组件。
demo下载地址:http://download.csdn.net/detail/dangxw_/7005525
---------------------------------------------------------------------------------------------------------------------分割线
看到自己的资源被喷了,才发现系统签名过程一直没有更新。当时是因为闲的没事而且csdn上没有了下载积分才记录下来这个虚拟按键过程的,最近一直比较忙,而且下班后住的地方没有网,所以一直没有写完。总之不好意思。
下载完那个demo之后导入,然后导出未签名的apk,点击项目,右键>android tools>Export unsigned application package.
然后下载签名工具,http://download.csdn.net/detail/dangxw_/7106645 里面自带的签名是4.3的好像,具体记不清了。
如果想要换个系统版本的签名,直接替换掉 platform.x509.pem,platform.pk8这两个文件就行了。
下载这两个文件的步骤详见:http://blog.sina.com.cn/s/blog_a72ec20c0101d7cx.html
那两个签名的路径为:build/target/product/security
- android 实现按键精灵
- Android模拟点击屏幕,实现按键精灵点击屏幕功能
- C++实现一个按键精灵
- 按键精灵实现原理
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- JavaScript实现按键精灵
- 按键精灵
- 按键精灵
- 按键精灵
- 按键精灵
- 按键精灵
- ruby实现按键精灵的功能
- 市面上有一款android的按键精灵,他是基于什么原理实现的实现
- php代码refine实例
- Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
- Xcode上使用Reveal运行时修改应用界面
- C++设计模式2-原型模式Prototype
- Linux下利用Lsof恢复误删文件的方法
- android 实现按键精灵
- 求数组中的逆序对数目(POJ1007)
- External Send - Sending PO by email
- jQuery.map(arr|obj,callback) 的map函数用法(十四)
- java接口的定义与使用
- c++ find 用法
- 达梦(5)通过DCI实现增删改查
- SQLite学习1
- CodeIgniter数据库配置