2012-01-02 5 views
16

ドロイドのキープレスをプログラムでシミュレートするにはどうすればよいですか?私はマニュアルキープレス(ドローイングに登場する人はキーを押しているが、プログラムでやっている)を模倣したいと思う。Androidシミュレートキープレス

そこにはIWindowManagerという解決策がありますが、それは新しいSDKではもうオプションではありません。

+0

テスト機器を、以外のものに対応するアプリを変更します実際のタッチ、およびLinuxレベルでイベントを注入するためのデバイスの「ルーティング」は、3つの選択肢です。 –

答えて

32

あなたが機器を使用することができ、あなたの活動のの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(); 

...しかし、私は、これはあなたが何であるかであるかどうかわからないです

+4

これはまさに私が探しているものですが、厳密にテスト用の計測器では​​ありませんか?私はテストではなく、ライブアプリで使用できるソリューションを探しています。前もって感謝します。 – calcrisk33

+0

@ calcrisk33これがライブアプリの実行可能なソリューションであるかどうかについての情報はありませんでした。あなたはそのように使い終わったのですか? – Kirk

+1

@Kirk私はやったし、キーストローク/プレスをシミュレートするために非常にうまくいった。 – calcrisk33

0

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

これを使用するには、KeyEventを受け取るターゲットビュー(EditTextなど)を指定する必要があります。例えば:(編集テキストが集中した一方で)

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

この結果は、ユーザーのようですが、実際に#キーを押します。

ます。また input text、すなわちを使用することができます
0

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

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

shellから:

input text 'example\\@email.com' 
関連する問題