安卓模拟按键

2022-09-01 11:39:10

如何以编程方式模拟机器人上的按键?我想模仿手动按键(在机器人上显示有人正在按某个键,但它正在以编程方式完成)。

有涉及 的解决方案,但在新的 SDK 中,这不再是一个选项。IWindowManager


答案 1

您可以使用检测,即从 on创建活动调用的以下代码将导致菜单多次打开和关闭:

    new Thread(new Runnable() {         
        @Override
        public void run() {
            try {
            Instrumentation inst = new Instrumentation();
            for ( int i = 0; i < 10; ++i ) {
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
                Thread.sleep(2000);
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
                Thread.sleep(2000);
            }
            }
            catch(InterruptedException e){
            }
        }   
    }).start();

...但我不确定这是否是你所追求的


答案 2

如果您有一个想要使用该事件的视图,则可以使用 BaseInputConnection 类及其 sendKeyEvent 方法。

要使用它,您需要指定一个将接收KeyEvent的目标视图(例如EditText)。例如:

EditText editText;
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND));

这样做的结果就像用户实际上按下了#键(同时使编辑文本聚焦)。