Estoy escribiendo la aplicación remota de Android. Cuando toco y me muevo en la aplicación de Android, , el cursor en la máquina servidor también se mueve, pero se demora aproximadamente un segundo.Mover el cursor más suavemente (aplicación remota)
Mi aplicación simplemente tiene dos hilos: el cliente envía coordenadas, el servidor los recibe y eso es todo. Mi solución es solo pasar dx, dy a través de ObjectInputStream y usar Robot :: mouseMove para mover el cursor.
¿Puede darme algunos consejos para evitar que el cursor se retrase? (sin problemas como RemoteDroid ^^)
Mi Sever:
public void run() {
..........
while(true) {
// get dx, dy from ObjectInputStream
........
moveMouseByDelta(dx, dy);
}
...........
}
private void moveMouseByDelta(int dx, int dy)
{
try {
Point p = MouseInfo.getPointerInfo().getLocation();
int currentX = p.x;
int currentY = p.y;
Robot robot = new Robot();
robot.mouseMove(currentX + dx, currentY + dy);
} catch (AWTException e) {
e.printStackTrace();
}
}
Mi cliente (aplicación de control remoto de Android):
private void touchTouchPad(MotionEvent event)
{
int x = (int)event.getX();
int y = (int)event.getY();
switch(event.getAction()) {
............
case MotionEvent.ACTION_MOVE:
if(leftMouseHold) {
if(clientThread != null) {
int dx = x - xMouse;
int dy = y - yMouse;
xMouse += dx;
yMouse += dy;
clientThread.sendDelta(dx, dy);
}
}
break;
..............
}
}
(Esto no es mi tarea, es mi estudio)
Editar: añadir más información
No proporcionó gran parte del código de interacción cliente-servidor pero si no lo hizo ya, agregue 'OutputStream.flush() 'después de haber escrito las coordenadas del cliente. También puede valer la pena verificar de dónde viene ese retraso, poner System.out una vez que reciba las coordenadas, etc., para buscar si puede encontrar el lugar donde se cuelga. – harism
Explique la naturaleza del canal de comunicación cliente-servidor. –