【安卓开发、鸿蒙开发】安卓模拟按键事件

发布于:2024-01-21 ⋅ 阅读:(74) ⋅ 点赞:(0)

1、需要在manifest 里面增加android:sharedUserId=“android.uid.system”
加上权限
必须是系统级app或者Root权限

2、核心代码

public static void simulateKey(int KeyCode) {
        try {
            if (mInstrumentation == null) {
//            KeyEvent.KEYCODE_TV_INPUT_HDMI_1
                mInstrumentation = new Instrumentation();
            }
            mInstrumentation.sendKeyDownUpSync(KeyCode);
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }

3、调用代码

// 不能在主UI线程执行
     new Thread(new Runnable() {
        @Override
        public void run() {
             try {
                 // 模拟回车按键
                 Instrumentation inst = new Instrumentation();
                 inst.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);  //传入不同的keycode就ok了
                 
                 // 模拟直接切换到HDMI 1
                TVKeyPadControlUtil.simulateKey(KeyEvent.KEYCODE_TV_INPUT_HDMI_1);
             }catch(Exception ex) {
                 ex.printStackTrace();
             }
         }
    }).start();

4、用Runtime模拟按键

/**
     * 用Runtime模拟按键操作
     *
     * @param keyCode
     *            按键事件(KeyEvent)的按键值
     */
    public static void sendKeyCode(int keyCode) {
        try {
            String keyCommand = "input keyevent " + keyCode;
            Runtime runtime = Runtime.getRuntime();
            Process proc = runtime.exec(keyCommand);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("sendKeyCode异常:"+e.getMessage());
        }
    }

5、使用需要相关权限。

本文含有隐藏内容,请 开通VIP 后查看

网站公告


今日签到

点亮在社区的每一天
去签到