지금 안드로이드로 마우스 앱을 만들고 있습니다. TCP 통신 방식이구요 마우스제어를 하는데 끊기는 문제가 생겨 질문드립니다.

 

잘 움직이긴 하나 테스트 할때 마우스가 뚝뚝 끊기더라구요.

그러다가 어쩌다가 한번은 마우스가 매우 부드러운 움직임을 보여주더니 다시 테스트해보니

또 항상 뚝뚝 움직임이 끊깁니다. 여러번 테스트 해봐도 이제 다시는 부드러운 움직임을 보여주진 않네요...

자이로스코프 센서를 이용한 마우스 이구요.

WIFI환경입니다. 서버 쪽에 센서값 넘어 오는거 찍어보니 속도도 매우 빠르게 옵니다.

 빨간색-클라이언트쪽소스

파란색-서버쪽소스

 

if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
     
    gyro_acc[0] =(-1)* (event.values[0] - pre_gyro_data[0]); //센서 움직임 변화량입니다.
    gyro_acc[1] = event.values[1] - pre_gyro_data[1];
     
    pre_gyro_data[0] = event.values[0];
    pre_gyro_data[1] = event.values[1];
    
   
     
   }
   
   PrintWriter out = new PrintWriter(networkWriter, true);
   out.println(gyro_acc[0]);
   out.println(gyro_acc[1]);

 

이부분이 서버로 단말기 자이로센서의 움직임을 보내구요. 변화하는 값을 계속 보냅니다.

 

 

String str = in.readLine();
String str2 = in.readLine();

 

x_y[0] = Float.parseFloat(str);
x_y[1] = Float.parseFloat(str2);

 

//중략 x_y[]  움직임량 보정부분(이부분때문에 끊기는 것 처럼 보이는 것이 아닌것은 확실합니다.)

 

X = (MouseInfo.getPointerInfo().getLocation().x + (int) (x_y[0])  //현재 마우스 위치에서 센서 변화량 만큼 더합니다.
       * (-1));

Y = (MouseInfo.getPointerInfo().getLocation().y + (int) (x_y[1]));


     Rb(X, Y);//마우스 움직임

 

 public static void Rb(int x, int y) throws AWTException {
  Robot R = new Robot();
  R.mouseMove(x, y);
 }

 

 

그리고 메인에서

Thread desktopServerThread = new Thread(new TCPServer(portnum));
desktopServerThread.start();

이며 위의 서버 소스는 쓰레드 안에 있습니다.

 

처음엔 클라이언트쪽이 너무 빨리 센서변화량을 계속 보내서 버퍼 문제인가 했습니다. 그래서 클라이언트 쪽에 쓰레드 슬립도 걸어봤지만 마우스는 계속 끊깁니다.

 

24시간중에 16시간은 이거 붙잡은것 같습니다.

조언해주시면 감사드리겠습니다.