我正在制作一个应用程序,用我的智能手机和arduino控制一辆玩具车,我设法连接到蓝牙和模块,并用LED灯进行测试,一切都很好。我只有一个担心,假设我希望汽车从on Touch方法向前移动,就像这个代码(但这个是用于LED灯)
LED_On.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
LEDOn();
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
LEDOff();
return false;
}
return false;
}
});现在我的问题是,当我把手从触摸屏上移开时,我想要一种方法或技术来让应用程序什么都不做,因为现在我为每个Action_Down和Action_UP创建了一个单独的方法,这使得我每次都指定一个不同的字母发送给arduino来对玩具车进行更改,这样做我就会有大量的字母,这是不方便的。
public void LEDOn(){
// turn LED On
if (btSocket!=null)
{
try
{
btSocket.getOutputStream().write("F".toString().getBytes());
}
catch (IOException e)
{
msg("Error");
}
}
}另外,如果有人能解释一下多点触控到底是如何工作的,我将不胜感激。
发布于 2017-07-09 23:30:50
对于任何面临同样问题的人来说,制作Rc控制器就是我修复它的方法。
我使用这个代码来发送z字符,每当我做一个动作向上,例如我触摸前进按钮,然后释放,当我释放时,我将发送z字符。
if(btSocket!=null){
try
{
btSocket.getOutputStream().write("z".toString().getBytes());
}
catch (IOException e)
{
msg("Error");
}
} 这是我的反向onTouch的方法。
downView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
downOn();
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
directionsOff();
return true;
}
return false;
}
});这是发送字符D的方法
public void downOn(){
// starts moving backwards
if(btSocket!=null){
try
{
btSocket.getOutputStream().write("D".toString().getBytes());
}
catch (IOException e)
{
msg("Error");
}
}
}这是我使用的arduino代码,我在LED上测试。
if (state == 'D') {
digitalWrite(LED, HIGH);
}else if (state == 'F') {
digitalWrite(LED2, HIGH);
}else{
digitalWrite(LED, LOW);
digitalWrite(LED2, LOW);
}我希望我说得够清楚了。
https://stackoverflow.com/questions/44980626
复制相似问题