Java 更平稳地移动光标(远程应用程序)

Java 更平稳地移动光标(远程应用程序),java,android,client-server,Java,Android,Client Server,我正在编写Android远程应用程序。当我在Android应用程序上触摸并移动时,服务器上的光标也会移动,但会延迟大约一秒钟 我的应用程序只是两个线程:客户端发送坐标,服务器接收坐标,仅此而已。 我的解决方案就是通过ObjectInputStream传递dx、dy,并使用Robot::mouseMove移动光标 您能给我一些建议以防止光标延迟吗?(像^^一样平滑) 我的服务器: public void run() { ..........

我正在编写Android远程应用程序。当我在Android应用程序上触摸并移动时,服务器上的光标也会移动,但会延迟大约一秒钟

我的应用程序只是两个线程:客户端发送坐标,服务器接收坐标,仅此而已。 我的解决方案就是通过ObjectInputStream传递dx、dy,并使用Robot::mouseMove移动光标

您能给我一些建议以防止光标延迟吗?(像^^一样平滑)

我的服务器:

    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();
        }
    }
我的客户端(Android远程应用程序):

(这不是我的家庭作业,这是我的学习)


编辑:添加更多信息

我只谈到Windows操作系统,这并不奇怪,因为RDP限制为BW每秒56-64Kb

1/冻结、减速和延迟是由两台设备的分辨率(f.e.handy 480x320和fullHD PC监视器之间的像素)之间的转换引起的,如果差异(像素)更大,则移动更不自然

2/冻结和延迟是由数据连接的波动引起的


最糟糕的是,当这两个因素同时存在时,这是相当有趣的

您没有提供太多的客户机-服务器交互代码,但如果您还没有提供,请在从客户机写入坐标后添加
OutputStream.flush()
。此外,还可能值得检查延迟的来源,在收到坐标后将System.out等放出来,以查找是否可以找到延迟的位置。请解释客户机-服务器通信通道的性质。
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;
            ..............
        }
}