web-dev-qa-db-ja.com

Androidキープレスをシミュレート

Droidのキーをプログラムでどのようにシミュレートできますか?手動のキープレスを模倣したいと思います(ドロイドに誰かがキーを押しているように見えますが、プログラムで行われています)。

IWindowManagerに関する解決策は世の中にありますが、それは新しいSDKではもはやオプションではありません。

25
calcrisk33

インストルメンテーションを使用できます。つまり、アクティビティのonCreateから呼び出される次のコードにより、メニューが複数回開いたり閉じたりします。

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

...しかし、これがあなたが求めているものかどうかはわかりません

41
marcinj

イベントを消費するビューがある場合は、 BaseInputConnection クラスとその sendKeyEvent メソッドを使用できます。

これを使用するには、KeyEventを受け取るターゲットビュー(EditTextなど)を指定する必要があります。例えば:

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

この結果は、ユーザーが実際に#キーを押したようなものです(エディットテキストにフォーカスがある間)。

7
tpaczesny

input textを使用することもできます。つまり、

コンピューターからadb経由:

adb Shell input text 'example\\@email.com'  

Shellから:

input text 'example\\@email.com'  
0
Pedro Lobito