현재 블루투스를 이용해서 로봇을 제어중인데
키버튼을 누를때 값을 쏴주는 구조입니다.
그런데 thread.sleep를 쓰다보니 어느정도 딜레이가 걸리더라구요
버튼을 누르고있으면 일정값으로 데이터가 고정되게할수는 없을까요?
up.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP;
if(isPressed) {
timeout = new Thread(new timeout());
timeout.start();
String msg = "up";
Main.getInstance().sendMessage(msg);
return true;
} else if(isReleased){
timeout.interrupt();
return true;
}
return true;
}
final class timeout implements Runnable {
public void run() {
int time =1;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
timeout.interrupt();
}
while(!(timeout.isInterrupted()))
{
String msg = "up";
Main.getInstance().sendMessage(msg);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
timeout.interrupt();
}
}
}
}
});
down.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP;
if(isPressed) {
timeout = new Thread(new timeout());
timeout.start();
String msg = "do";
Main.getInstance().sendMessage(msg);
return true;
} else if(isReleased){
timeout.interrupt();
return true;
}
return true;
}
final class timeout implements Runnable {
public void run() {
int time =1;
try {
Thread.sleep(time);
} catch (InterruptedException e) {
timeout.interrupt();
}
while(!(timeout.isInterrupted()))
{
String msg = "do";
Main.getInstance().sendMessage(msg);
try {
Thread.sleep(time);
} catch (InterruptedException e) {
timeout.interrupt();
}
}
}
}
});
right.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP;
if(isPressed) {
timeout = new Thread(new timeout());
timeout.start();
String msg = "ri";
Main.getInstance().sendMessage(msg);
return true;
} else if(isReleased){
timeout.interrupt();
return true;
}
return true;
}