2011-06-24 5 views
2

コードからスクリーン上の特定のポイント(たとえば(x、y))に偽のタッチを生成することはできますか?私の活動にボタンがあり、それをタッチスクリーンでクリックしたくないのですか?これを達成する方法はありますか?Androidの偽のタッチスクリーン

+0

私はあなたがあなたのアプリケーションをテストするための「猿」と呼ばれるプログラムがある知っている可能性として...画面上で「どのようにサルのクリックに対してグーグルで試してみてください、存在しなければならないと確信しています? " – doNotCheckMyBlog

答えて

2

この方法が役立ちます。画面が実際に触れているかのように

http://developer.android.com/reference/android/view/View.html#performClick()

myButton.performClick(); 
+0

ええええええええええええええええええええええええ、私の質問のために。最後に、バックグラウンドサービスのすべてから、アクティビティの画面だけでなく、どの画面でもクリックすることができます。私はそれのために猿を使わなければならないと思う。 – user785461

1

次のコードは、タッチイベントを生成します。

注意:根ざしたデバイスのみ

public class Tap { 
private static final String SU = "su", TAG = Tap.class.getSimpleName(), 
     COMMAND = "/system/bin/input tap %d %d ", ASCII = "ASCII"; 

public Tap() { 

} 

public void tap(int x1, int y1) { 
    TapTask t = new TapTask(x1, y1); 
    t.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} 

private class TapTask extends AsyncTask<Void, Void, Void> { 
    private int x1, y1; 

    public TapTask(int x1, int y1) { 
     this.x1 = x1; 

     this.y1 = y1; 

    } 

    protected Void doInBackground(Void... args) { 
     try { 
      Process sh = Runtime.getRuntime().exec(SU, null, null); 

      OutputStream os = sh.getOutputStream(); 

      os.write((String.format(COMMAND, x1,y1)).getBytes(ASCII)); 
      os.flush(); 
      os.close(); 
      sh.waitFor(); 

      Log.i(TAG,String.format("tap %d %d ",x1,y1)); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 
} 
関連する問題