因此,我正在使用Java在移动应用程序中开发一个控制器,当前每当我触摸该按钮时,它将连续发送3个数据。 释放按钮时只应发送一个数据而另一个数据时
我可以设置在释放按钮时获取数据,但由于传递了很多数据而无法准确
upbtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rosbridge.Publish("/set_velocity", nav_ctrl);
if(event.getAction() == ACTION_DOWN) {
nav_ctrl.linear.x = 0.6;
nav_ctrl.angular.z = 0;
return true;
} else if (event.getAction() != MotionEvent.ACTION_UP) {
return false;
}
nav_ctrl.linear.x = 0;
nav_ctrl.angular.z = 0;
return false;
}
});
downbtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rosbridge.Publish("/set_velocity", nav_ctrl);
if(event.getAction() == ACTION_MOVE) {
nav_ctrl.linear.x = -0.6;
nav_ctrl.angular.z = 0;
} else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
nav_ctrl.linear.x = 0;
nav_ctrl.angular.z = 0;
}
return false;
}
});
leftbtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rosbridge.Publish("/set_velocity", nav_ctrl);
if(event.getAction() == ACTION_DOWN) {
nav_ctrl.linear.x = 1.2;
nav_ctrl.angular.z = 0;
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
leftbtn.performClick();
nav_ctrl.linear.x = 0;
nav_ctrl.angular.z = 0;
}
return false;
}
});
rightbtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rosbridge.Publish("/set_velocity", nav_ctrl);
if(event.getAction() == ACTION_DOWN) {
nav_ctrl.linear.x = -1.2;
nav_ctrl.angular.z = 0;
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
nav_ctrl.linear.x = 0;
nav_ctrl.angular.z = 0;
}
return false;
}
});
}
我希望只能发送一行数据,例如:“ angular”:{“ x”:0.0,“ y”:0.0,“ z”:0.0},“ linear”:{“ x”:-0.6,“ y“:0.0,” z“:0.0}},
输出是相似的,但是交付了多个数据