4

是否可以通过坐标或视图元素模拟“点击”(触摸屏)?

4

4 回答 4

5

可以在安卓屏幕上模拟触摸事件。如果您有视图的坐标,则可以使用 adb shell 命令生成触摸事件。例如-

adb shell 输入点击 xy

其中 x 和 y 是您的坐标。您可以从终端运行此命令。如果您想从 android 代码运行命令,请使用“/system/bin/ input tap x y”并使用 Runtime.getRuntime() 方法运行它。详情请回复,乐于助人!:)

于 2017-11-29T12:20:34.160 回答
2

正如azdev 建议的那样,试试这个:

    view.setOnTouchListener(new OnTouchListener()
{
    public boolean onTouch(View v, MotionEvent event)
    {
        Toast toast = Toast.makeText(
            getApplicationContext(), 
            "View touched", 
            Toast.LENGTH_LONG
        );
        toast.show();

        return true;
    }
});


// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
    downTime, 
    eventTime, 
    MotionEvent.ACTION_UP, 
    x, 
    y, 
    metaState
);

// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);
于 2013-05-20T10:32:36.973 回答
1

大概你有一些你想通过点击来调用的东西。所以......如果它是一个实际的按钮,你可以调用performClick()它。如果它不是一个按钮,那么只要满足您期望的条件,就调用您希望执行的任何方法。如果您提供更多关于您实际尝试做的事情的详细信息,这可能会有所帮助。

于 2013-05-20T10:28:21.823 回答
0

在视图上,是的。通过坐标,一个Java机器人,我不知道。

例如:

Button buttonFoo = (Button)findViewById(R.id.button_foo);
buttonFoo.performClick();
于 2013-05-20T10:26:24.023 回答