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