これが本当に問題なのかどうかはわかりませんが、wifiまたはポータブルホットスポットを介してコンピューター上のマウスカーソルを制御するアプリを作成しました。問題は次のとおりです。PCとAndroidデバイスをwifiアクセスポイントに接続すると、PCをAndroidデバイスのポータブルホットスポットに接続したときほどカーソルの動きがスムーズになりません。2つの異なるAndroidスマートフォンで試してみましたが、同じ問題が発生しました。アプリで使用するTCPコードは次のとおりです。
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
xStart = event.getRawX();
yStart = event.getRawY();
if (mess.equals("click")) {
mess="leftdown";
}
break;
case MotionEvent.ACTION_MOVE:
xMove = event.getRawX();
yMove = event.getRawY();
distanceX = (xStart - xMove);
distanceY = (yStart - yMove);
sendCmd(distanceX, distanceY);
xStart = xMove;
yStart = yMove;
mess="move";
sendMess(mess);
break;
case MotionEvent.ACTION_UP:
break;
}
return detector.onTouchEvent(event);
}
void sendCmd(float distanceX, float distanceY) {
try {
out.writeFloat(distanceX);
out.writeFloat(distanceY);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void sendMess(String mess) {
try {
out.writeUTF(mess);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
これが私がサーバーで使用したTCPコードです
@Override
public void run() {
// System.out.println("Connected");
// pixel, velocity
float x = 0, y = 0;
try {
Robot mouse = new Robot();
PointerInfo a;
Point b;
String mess;
int xx, yy;
DataInputStream in = new DataInputStream(server.getInputStream());
x = in.readFloat();
y = in.readFloat();
mess = in.readUTF();
System.out.println(x + "-" + y);
if (mess.equals("click")) {
mouse.mousePress(InputEvent.BUTTON1_MASK);
mouse.mouseRelease(InputEvent.BUTTON1_MASK);
} else if (mess.equals("scroll")) {
} else if (mess.equals("leftdown")) {
mouse.mousePress(InputEvent.BUTTON1_MASK);
} else if (mess.equals("leftup")) {
mouse.mouseRelease(InputEvent.BUTTON1_MASK);
} else if (mess.equals("right")) {
mouse.mousePress(InputEvent.BUTTON3_MASK);
mouse.mouseRelease(InputEvent.BUTTON3_MASK);
} else if (mess.equals("move")) {
a = MouseInfo.getPointerInfo();
b = a.getLocation();
xx = (int) b.getX();
yy = (int) b.getY();
mouse.mouseMove(xx - (int) x, yy - (int) y);
mouse.delay(7);
}
} catch (Exception e) {
// TODO: handle exception
}
}
私のJavaファイルにコード全体を投稿できないいくつかの特定の理由のために私を許してください。