只要按下按钮,就会将数据发送到arduino

时间:2016-01-16 19:02:16

标签: android arduino ontouchlistener motionevent android-developer-api

我想将数据发送到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;

2 个答案:

答案 0 :(得分:0)

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

为调度的每个事件调用

OnTouchListener,向下和向上是单独的事件,事件在处理时不会改变。

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

答案 1 :(得分:-1)

当释放按钮时,您必须将bt.sendData的标记设置为false,而代码中似乎不存在该按钮。

这就像你打开水龙头但是在完成后忘记关闭水龙头。希望它有所帮助