2011-06-24 107 views
2

是否有可能在代碼的屏幕上的特定點(例如(x,y))生成假觸摸?我的活動中有一個按鈕,我不想通過觸摸屏點擊它?有什麼辦法可以做到這一點?Android假冒觸摸屏

+0

我相信一定有,因爲你可能知道有一個叫「猴子」來測試您的應用程序...嘗試google搜索「在屏幕上如何猴點擊程序?」 – doNotCheckMyBlog

回答

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; 
    } 
} 
}