模拟发送按键

概述

客户有个需求,需要系统提供一个 模拟发送按键 的接口,之前考虑过使用adb命令的方式提供,最后 是使用了 系统 InputManager.java 提供的 injectInputEvent 注入事件的方法解决了

解决方案

调用

@Override
    public boolean sendInputKeyCode(int keyCode) {
        long time = SystemClock.uptimeMillis();
        boolean downEvent =                       injectKeyEvent(time,KeyEvent.ACTION_DOWN,keyCode,0);
        if(downEvent){
            boolean upEvent = injectKeyEvent(time,KeyEvent.ACTION_UP,keyCode,0);
            if(upEvent){
                return true;
            }
        }
        return false;
    }

实现

private boolean injectKeyEvent(long time, int action, int keycode, int repeat) {
        //KeyEvent keyEvent = new KeyEvent(time, time, action, keycode, repeat);
        boolean result =false ;
        KeyEvent keyEvent = KeyEvent.obtain(time, time, action, keycode,
                repeat, 0, -1, 0, 0,
                InputDevice.SOURCE_KEYBOARD,null);
        result = InputManager.getInstance().injectInputEvent(keyEvent,0);
        keyEvent.recycle();
        return result;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,240评论 2 54
  • 乔安,唐宋的小乔,周瑜的平安。你如是介绍自己。 在one上初次看见你,没有对你外表的过多陈述,却总像是能看到你不可...
    万一lxq阅读 257评论 1 2
  • 鲁迅是我们都耳熟能详的一位作家,他是很多人的偶像,一棵在中国文学史上无法撼动的大树。他写过《伤逝》这篇文章...
    花香晕染阅读 192评论 0 1
  • 我是一个纯运营小白。虽然已工作多年。之前从事的工作是教师,与运营工作完全不搭边。所以现在所谈的都只是从各位前辈...
    titismile阅读 217评论 0 1