我想将数据发送到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;
答案 0 :(得分:0)
您的问题是在收到第一个事件时开始的无限循环while(event.getAction() == MotionEvent.ACTION_DOWN)
。
OnTouchListener
,向下和向上是单独的事件,事件在处理时不会改变。
因此,要解决您的问题 - 您需要从单独的线程发送数据。
在ACTION_DOWN
上启动它,并且还有一个将在ACTION_UP
上修改的标志,以指示要退出的线程。
答案 1 :(得分:-1)
当释放按钮时,您必须将bt.sendData
的标记设置为false
,而代码中似乎不存在该按钮。
这就像你打开水龙头但是在完成后忘记关闭水龙头。希望它有所帮助