Android假触摸屏

时间:2011-06-24 09:26:27

标签: android touchscreen

是否可以在代码中在屏幕上的特定点(例如(x,y))生成虚假触摸?我的活动上有一个按钮,我不想通过触摸屏点击它?有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

这种方法可以帮到你。

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

myButton.performClick();

答案 1 :(得分:1)

以下代码生成触摸事件,就像屏幕确实被触摸一样。

注意:仅限root设备

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