javaandroidkeykeypresssimulate

Android simulate key press


How can I programmatically simulate a key press on a Droid? I would like to mimic a manual key press (appearing on the droid that someone is pressing a key but it is being done programmatically).

There are solutions out there involving IWindowManager, but that isn't an option anymore in the new SDK.


Solution

  • You can use instrumentation, ie following code called from onCreate of your activity will cause menu to be opened and closed multiple times:

        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();
    

    ...but I am not sure if this is what you are after