마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼에서 손을떼기 전까지 일정값

0 추천
현재 블루투스를 이용해서 로봇을 제어중인데 
 
키버튼을 누를때 값을 쏴주는 구조입니다.
 
그런데 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;
}
 
아아앙아아ㅣ이 (220 포인트) 님이 2014년 7월 2일 질문

1개의 답변

0 추천
http://blog.trostalex.com/?p=114

검색 키워드 : android screen joystick
갈무리 (12,430 포인트) 님이 2014년 7월 2일 답변
음...참고해봤는데 저 소스또한 thread.sleep을 사용하는지라..
...