Android 模拟按键,模拟触摸点击,模拟滑动
(1)模拟按键发送事件
1.1 在dispatchKeyvent中直接替换按键Code
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
//有些定制机没有左右键,用上下键和音量加减键模拟左右键,控制音量大小。
if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP) {
event.setKeyCode(KeyEvent.KEYCODE_DPAD_RIGHT);
} else if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) {
event.setKeyCode(KeyEvent.KEYCODE_DPAD_LEFT);
}else if(event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP){//音量上键
event.setKeyCode(KeyEvent.KEYCODE_DPAD_RIGHT);//右键
}else if(event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN){
event.setKeyCode(KeyEvent.KEYCODE_DPAD_LEFT);
}
return super.dispatchKeyEvent(event);
}
1.2 监听某个按键,替换按键code
mTitle.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
//返回键专门用来返回,删除功能由A3完成.
if(KeyEvent.KEYCODE_BACK == keyEvent.getKeyCode()){
onBackPressed();
return true;
}
//A3专门作为删除字符串作用.
if(KeyEvent.KEYCODE_A3 == keyEvent.getKeyCode() && KeyEvent.ACTION_DOWN == keyEvent.getAction()){
keyEvent.setKeyCode(KeyEvent.KEYCODE_DEL);//删除字符串
mTitle.dispatchKeyEvent(keyEvent);
return true;
}
return false;
}
});
简单的代码,记录一下。
(2)模拟触摸点击,和模拟滑动,有些场景可能会用到。
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
WindowManager win=getWindowManager();
Display display=win.getDefaultDisplay();
int width=display.getWidth();
int height=display.getHeight();
if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER){
//点击屏幕中点
setMouseClick(width/2,height/2);
}else if(keyCode==KeyEvent.KEYCODE_DPAD_RIGHT){
//向右滑动屏幕
onFling(width/2,height/2,"right");
}else if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT){
//向左滑动屏幕
onFling(width/2,height/2,"left");
}
return super.onKeyUp(keyCode, event);
}
//模拟触摸点击
public void setMouseClick(int x, int y){
MotionEvent evenDownt = MotionEvent.obtain(System.currentTimeMillis(),
System.currentTimeMillis() + 100, MotionEvent.ACTION_DOWN, x, y, 0);
dispatchTouchEvent(evenDownt);
MotionEvent eventUp = MotionEvent.obtain(System.currentTimeMillis(),
System.currentTimeMillis() + 100, MotionEvent.ACTION_UP, x, y, 0);
dispatchTouchEvent(eventUp);
evenDownt.recycle();
eventUp.recycle();
}
//模拟滑动
public void onFling(final int x, final int y,final String leftRight){
new Thread(new Runnable() {
@Override
public void run() {
Instrumentation inst = new Instrumentation();
long dowTime = SystemClock.uptimeMillis();
int distance=0;
if(leftRight.equals("right")){//right,next
distance=x-20;
}else{//left,previous
distance=x+20;
}
inst.sendPointerSync(MotionEvent.obtain(dowTime,dowTime,
MotionEvent.ACTION_DOWN, x, y,0));
inst.sendPointerSync(MotionEvent.obtain(dowTime,dowTime,
MotionEvent.ACTION_MOVE, x, y,0));
inst.sendPointerSync(MotionEvent.obtain(dowTime,dowTime+20,
MotionEvent.ACTION_MOVE, distance, y,0));
inst.sendPointerSync(MotionEvent.obtain(dowTime,dowTime+20,
MotionEvent.ACTION_UP, distance, y,0));
inst.setInTouchMode(false);//如果是键盘机,不能是触摸模式,否则无焦点
}
}).start();
}
参考来源:
https://www.cnblogs.com/zhujiabin/p/6971475.html
https://blog.csdn.net/linghaidong/article/details/53408002
Android 模拟按键,模拟触摸点击,模拟滑动相关推荐
- 【android】几种模拟按键、屏幕点击的方法
模拟按键: 1. new Instrumentation().sendKeyDownUpSync(int keycode); 发送keycode,down,up都会发送一遍 2. new Instru ...
- python模拟按键_Python实现windows下模拟按键和鼠标点击的方法
本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等. 前提先要安装 p ...
- python驱动级模拟按键_Python实现windows下模拟按键和鼠标点击的方法
本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等 # # _*_ c ...
- 模拟鼠标键盘html,模拟按键操作神器(鼠标键盘模拟操作助手)V2.0.2.1 正式版
模拟按键操作神器(鼠标键盘模拟操作助手)是一款很优秀好用的由网友自制的模拟按键操作的辅助工具.如果你需要一款好用的键盘模拟软件,小编带来的这款模拟按键操作神器是很不错的选择,功能强大全面,使用后可以帮 ...
- c语言模拟按键win d,Windows平台模拟按键方法总结
Reference 获取KeyboardClassServiceCallback函数的地址 SendMessage/PostMessage 是Ring3层的一种方法,SendMessage和PostM ...
- python模拟按键网游_Python实现windows下模拟按键和鼠标点击的方法
转于博客 https://www.cnblogs.com/huidaoli/p/7398392.html,原作者:huidaoli # _*_ coding:UTF-8 _*_ import win3 ...
- android uinput 按键_linux 虚拟输入设备(uinput)模拟鼠标和键盘的使用方法
Dashboard January 2007 IssueMehul PatelUsing uinput driver in Linux-2.6.x to send user inputDashboar ...
- Linux程序之触摸,Android(Linux)模拟按键、触摸屏等事件
前提: 在我们应用程序或者在写Android自动化测试时候常常会需要模拟实体按键,来给我们做测试用.这也是我要整理的目的.主要的涉及的是Linux Input Event事件.以下的例子基于Andro ...
- android模拟按键方法,Android随笔之——模拟按键操作的几种方式
前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...
- python实现翻_python实现模拟按键,自动翻页看u17漫画
python实现模拟按键,自动翻页看u17漫画 发布于 2015-10-22 08:23:25 | 134 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...
最新文章
- python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...
- 一个设计反模式——究竟什么是轮子理论
- Centos7安装配置Xhgui
- Mongodb的锁 原子性 隔离性 一致性
- 【机器学习】层次聚类
- python为什么是动态语言_python为什么是动态语言
- canvas笔记-文字渲染
- django缓存优化(二)
- discuz6.1.0 弹出无效的图片文件解决办法
- Excel 常用函数——关联匹配函数
- 地震 位错模型 matlab,地球物理学论文范文参考 地球物理学毕业论文范文[精选]...
- golang:IO File 操作
- SAP-ABAP-如何查找系统中已经存在的增强(包括1代2代3代BTE表字段增强等)和标准的增强点
- iPhone 各机型屏幕尺寸
- 删除矮人Dos目录argh
- 怎样在视频画面指定位置编辑马赛克
- 关于chrome、360浏览器自动填充的黄色背景处理方案
- 判断单链表是否有环以及环的连接点
- 全球 43 亿个 IPv4 地址正式耗尽!【智能快讯】
- 关于深度态势感知问题的思考
热门文章
- Latex设置字体大小及编辑公式等命令
- 中国逆变器行业市场供需与战略研究报告
- ArchiCAD24全新上线,多个新功能超出你的想象
- 一文告诉你如何用Bito AI提高开发效率
- Azure Database for Mysql 还原操作,还原表,还原库,还原一切
- 【BP预测】基于哈里斯鹰算法改进BP神经网络实现数据预测
- 备战蓝桥杯day1__LED跑马灯
- 盈利能力缓爬坡,物芯控股赴美IPO能否筑造牢固护城河?
- DNSPod十问“玩家”高少星:一个每周只需工作十分钟的投资人
- swift抛出异常_swift之异常处理