0

只要按下按钮,我就想向 arduino mega 2560 发送数据,当该按钮被释放时,它将停止发送信息。我正在使用带有 MotionEvent 常量的 onTouchListener。但是当我在手机上运行它时,我按下按钮,它会发送数据,即使过了一会儿我释放它。我在这里错在哪里?

    switch (v.getId()) {

    case R.id.left1: // check what button is pressed

        while(event.getAction() == MotionEvent.ACTION_DOWN) {

            bt.sendData("1"); // while pressing the button it sends data

        } 
        if(event.getAction() == MotionEvent.ACTION_UP) {

            // when it stops, do nothing

        }

        break;

    }

    return true;
4

2 回答 2

0

while(event.getAction() == MotionEvent.ACTION_DOWN)您的问题是在您收到第一个事件时开始的无限循环。

OnTouchListener为调度到视图的每个事件调用,向下和向上是单独的事件,并且事件在处理时不会更改。

所以要解决你的问题 - 你需要从一个单独的线程发送数据。启动它ACTION_DOWN并且还有一个标志将被修改ACTION_UP以指示线程退出。

于 2016-01-16T19:36:13.587 回答
-1

您必须设置释放按钮时的标志,bt.sendDatafalse在您的代码中似乎不存在。

这就像您打开水龙头取水,但完成后忘记关闭水龙头。希望能帮助到你

于 2016-01-16T19:18:49.360 回答