dispatchTouchEvent在活动android中返回false

时间:2014-05-10 02:26:03

标签: android events touch

我的目标是模拟屏幕上的触摸。我想保持简单,所以我没有将dispatchTouchEvent分配给任何视图,并让activity调用此方法。

我希望我的程序在固定的时间内触摸屏幕然后重复,所以我做了一个定时器和计时器任务来保存方法。

我打开了" Show touch trace"在开发者选项中,但我没有看到任何触摸痕迹。此方法返回的结果是false,我使用了日志来获取。你能为我的代码提供一些建议吗?哪里可能出错?谢谢!

我尝试在dispatchTouchEvent之前添加super或this,但它给了我一个错误。 :(

以下是代码:

Button button;
MotionEvent motionEvent;

@Override
public void onCreate(Bundle savedInstanceState) {
   ...
    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            beginTimer();
        }
    });
    //touch event
    long downTime = SystemClock.uptimeMillis();
    long eventTime = SystemClock.uptimeMillis();
    float x = 500.0f;
    float y = 500.0f;
    // List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
    int metaState = 0;
    motionEvent = MotionEvent.obtain(
            downTime,
            eventTime,
            MotionEvent.ACTION_DOWN,
            x,
            y,
            metaState
    );
}
public void beginTimer() {
    final Runnable setRunnable = new Runnable() {
        public void run() {
                dispatchTouchEvent(motionEvent);
                Log.d("clickEvent", String.valueOf(dispatchTouchEvent(motionEvent)));
        }
    };

    Timer timer = new Timer(true);
    TimerTask task = new TimerTask() {
        public void run() {
            runOnUiThread(setRunnable);
        }
    };
    timer.schedule(task, 1000, 1000);
}

非常感谢!!!

0 个答案:

没有答案