(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 模拟按键,模拟触摸点击,模拟滑动相关推荐

  1. 【android】几种模拟按键、屏幕点击的方法

    模拟按键: 1. new Instrumentation().sendKeyDownUpSync(int keycode); 发送keycode,down,up都会发送一遍 2. new Instru ...

  2. python模拟按键_Python实现windows下模拟按键和鼠标点击的方法

    本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等. 前提先要安装 p ...

  3. python驱动级模拟按键_Python实现windows下模拟按键和鼠标点击的方法

    本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等 # # _*_ c ...

  4. 模拟鼠标键盘html,模拟按键操作神器(鼠标键盘模拟操作助手)V2.0.2.1 正式版

    模拟按键操作神器(鼠标键盘模拟操作助手)是一款很优秀好用的由网友自制的模拟按键操作的辅助工具.如果你需要一款好用的键盘模拟软件,小编带来的这款模拟按键操作神器是很不错的选择,功能强大全面,使用后可以帮 ...

  5. c语言模拟按键win d,Windows平台模拟按键方法总结

    Reference 获取KeyboardClassServiceCallback函数的地址 SendMessage/PostMessage 是Ring3层的一种方法,SendMessage和PostM ...

  6. python模拟按键网游_Python实现windows下模拟按键和鼠标点击的方法

    转于博客 https://www.cnblogs.com/huidaoli/p/7398392.html,原作者:huidaoli # _*_ coding:UTF-8 _*_ import win3 ...

  7. android uinput 按键_linux 虚拟输入设备(uinput)模拟鼠标和键盘的使用方法

    Dashboard January 2007 IssueMehul PatelUsing uinput driver in Linux-2.6.x to send user inputDashboar ...

  8. Linux程序之触摸,Android(Linux)模拟按键、触摸屏等事件

    前提: 在我们应用程序或者在写Android自动化测试时候常常会需要模拟实体按键,来给我们做测试用.这也是我要整理的目的.主要的涉及的是Linux Input Event事件.以下的例子基于Andro ...

  9. android模拟按键方法,Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...

  10. python实现翻_python实现模拟按键,自动翻页看u17漫画

    python实现模拟按键,自动翻页看u17漫画 发布于 2015-10-22 08:23:25 | 134 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

最新文章

  1. python怎么封装方法然后调用_我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?...
  2. 一个设计反模式——究竟什么是轮子理论
  3. Centos7安装配置Xhgui
  4. Mongodb的锁 原子性 隔离性 一致性
  5. 【机器学习】层次聚类
  6. python为什么是动态语言_python为什么是动态语言
  7. canvas笔记-文字渲染
  8. django缓存优化(二)
  9. discuz6.1.0 弹出无效的图片文件解决办法
  10. Excel 常用函数——关联匹配函数
  11. 地震 位错模型 matlab,地球物理学论文范文参考 地球物理学毕业论文范文[精选]...
  12. golang:IO File 操作
  13. SAP-ABAP-如何查找系统中已经存在的增强(包括1代2代3代BTE表字段增强等)和标准的增强点
  14. iPhone 各机型屏幕尺寸
  15. 删除矮人Dos目录argh
  16. 怎样在视频画面指定位置编辑马赛克
  17. 关于chrome、360浏览器自动填充的黄色背景处理方案
  18. 判断单链表是否有环以及环的连接点
  19. 全球 43 亿个 IPv4 地址正式耗尽!【智能快讯】
  20. 关于深度态势感知问题的思考

热门文章

  1. Latex设置字体大小及编辑公式等命令
  2. 中国逆变器行业市场供需与战略研究报告
  3. ArchiCAD24全新上线,多个新功能超出你的想象
  4. 一文告诉你如何用Bito AI提高开发效率
  5. Azure Database for Mysql 还原操作,还原表,还原库,还原一切
  6. 【BP预测】基于哈里斯鹰算法改进BP神经网络实现数据预测
  7. 备战蓝桥杯day1__LED跑马灯
  8. 盈利能力缓爬坡,物芯控股赴美IPO能否筑造牢固护城河?
  9. DNSPod十问“玩家”高少星:一个每周只需工作十分钟的投资人
  10. swift抛出异常_swift之异常处理