지금 안드로이드로 마우스 앱을 만들고 있습니다. 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시간은 이거 붙잡은것 같습니다.
조언해주시면 감사드리겠습니다.
개발자님, 마우스 터치 기능 개발 해보려고 하는데 안드로이드를 이제 막 시작한 단계라 많은 어려움을 느끼고 있어요.ㅠ.ㅠ
혹시 마우스 터치까지만이라도 개발이 될 수 있는 참고가 될만한 서적들좀 추천해 주실 수 있으신가요...?
제가 산 책에는 소켓 연결조차 안나와있고, 찾아봐도 크게 도움이 될만한 자료들을 구하지 못해서요....
추천해 주시면 너무너무 감사드리겠습니다.
안드로이드 단말을 마우스로 사용해서 PC를 제어하는 어플인가요?
제경우는 PC에서 안드로이드 어플로 포인터를 전송해서 그림을 그리는건데... 한번 움직이면 부드럽게 움직이다가
가끔 턱턱 끊기고, 주로 안움직이다가 움직이기 시작할떄 주로 딜레이후 휙 움직입니다.
즉 PC(t1.전송1, t2.전송2....)하면 단말은(t2.전송1, t3.전송2,전송3...) 이후 동기화 됨.
그리고 움직이는 중간에.... 일단저는 프로세스 스케줄링이나
단말의 wifi특성(adb로 tcp redirection해서 연결/테스트 했을떄는 이런 현상이 줄어드는 듯한 인상을 받았슴니다.)을 의심하고 있는 상태입니다.
답변은 아니네요... 저역시..ㅠ.ㅠ