2

Androidフォンをタッチパッドとして使用できるようにするアプリケーションを作成しました。正常に動作しています。しかし、私を悩ませているのは、LAGがあることだけです。ラップトップのマウスが遅れることがあります。つまり、Android のタッチと完全に同期していません。

ラグについて考えられる唯一の理由は、次の座標の計算に使用されるロジックです。

タッチイベントで座標を送信するAndroidアプリケーションのコードは次のとおりです:(tはTextViewです)

t.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN){
                startX = event.getX();
                startY = event.getY();
            }

            if(event.getAction() == MotionEvent.ACTION_MOVE)
            {

            out.println("X:"+(event.getX()-startX)+"Y:"+(event.getY()-startY));
                startX=event.getX();
                startY=event.getY();
            }

            return true;
        }
    });

私が使用しているロジックは、座標の差を送信しているということです。serverside では、基本的なことが起こっています ('in' は BufferedReader です):

PointerInfo a = MouseInfo.getPointerInfo();
 Point b = a.getLocation();
 currX = (int)b.getX();
 currY=(int)b.getY();
    while ((inputLine = in.readLine()) != null) {
         if(inputLine.equals("LeftClick"))
         {
            robot.mousePress(InputEvent.BUTTON1_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_MASK);

          }
          else if(inputLine.equals("RightClick")){
            robot.mousePress(InputEvent.BUTTON3_MASK);
           robot.mouseRelease(InputEvent.BUTTON3_MASK);

          }
          else{
              outputLine = kkp.processInput(inputLine);
    //To break the string into X cordi and Y cordi.
           yloc = inputLine.indexOf("Y");
             float xcord = Float.parseFloat(inputLine.substring(2,yloc));   
                 float ycord = Float.parseFloat(inputLine.substring(yloc+2));

                 robot.mouseMove(currX+Math.round(xcord),currY+Math.round(ycord)); 
                 currX+=Math.round(xcord);
                 currY+=Math.round(ycord);
               }
 }

Can't be better のような遅延は正常ですか。または、上記のコードの計算を変更することで改善できます。PS:UDPを使用していません。

4

0 に答える 0