From 5fb7b58fc3f1025b6ac45f6daa70d4a1b5066961 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Fri, 17 Jul 2026 10:34:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20SystemInputUtils=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E5=A4=84=E7=90=86swipe=E5=8A=A8=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controlled/input/InputCommandHandler.java | 1 + .../controlled/input/SystemInputUtils.java | 24 +++++++++---------- .../com/ttstd/controller/MainActivity.java | 8 ++++--- .../controller/view/RemoteTouchView.java | 5 ++++ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/InputCommandHandler.java b/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/InputCommandHandler.java index ccd3154..d38d94f 100644 --- a/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/InputCommandHandler.java +++ b/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/InputCommandHandler.java @@ -79,6 +79,7 @@ public class InputCommandHandler { float relY = (float) command.getY(); int x = (int) (relX * screenWidth); int y = (int) (relY * screenHeight); + Log.d(TAG, "Motion event: " + action + " at: " + x + ", " + y); inputExecutor.injectMotionEvent(action, x, y); } diff --git a/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/SystemInputUtils.java b/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/SystemInputUtils.java index 499742d..d91d878 100644 --- a/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/SystemInputUtils.java +++ b/WebRTCControlled/app/src/main/java/com/ttstd/controlled/input/SystemInputUtils.java @@ -54,18 +54,18 @@ public class SystemInputUtils implements InputExecutor { @Override public void injectSwipe(int x1, int y1, int x2, int y2, long duration) { - long downTime = SystemClock.uptimeMillis(); - injectMotionEvent(downTime, downTime, MotionEvent.ACTION_DOWN, x1, y1); - - int steps = 10; - for (int i = 1; i <= steps; i++) { - SystemClock.sleep(duration / steps); - int x = x1 + (x2 - x1) * i / steps; - int y = y1 + (y2 - y1) * i / steps; - injectMotionEvent(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_MOVE, x, y); - } - - injectMotionEvent(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x2, y2); +// long downTime = SystemClock.uptimeMillis(); +// injectMotionEvent(downTime, downTime, MotionEvent.ACTION_DOWN, x1, y1); +// +// int steps = 10; +// for (int i = 1; i <= steps; i++) { +// SystemClock.sleep(duration / steps); +// int x = x1 + (x2 - x1) * i / steps; +// int y = y1 + (y2 - y1) * i / steps; +// injectMotionEvent(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_MOVE, x, y); +// } +// +// injectMotionEvent(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x2, y2); } @Override diff --git a/WebRTCController/app/src/main/java/com/ttstd/controller/MainActivity.java b/WebRTCController/app/src/main/java/com/ttstd/controller/MainActivity.java index 155889d..f06cca3 100644 --- a/WebRTCController/app/src/main/java/com/ttstd/controller/MainActivity.java +++ b/WebRTCController/app/src/main/java/com/ttstd/controller/MainActivity.java @@ -127,6 +127,7 @@ public class MainActivity extends AppCompatActivity { @Override public void onSwipe(float relX1, float relY1, float relX2, float relY2, long duration) { // 已通过 onMotionEvent 处理 + sendSwipeCommand(relX1, relY1, relX2, relY2, duration); } @Override @@ -589,7 +590,8 @@ public class MainActivity extends AppCompatActivity { Object ms = stats.getMembers().get("messagesSent"); if (ms instanceof Number) dcMessagesSent = ((Number) ms).longValue(); Object mr = stats.getMembers().get("messagesReceived"); - if (mr instanceof Number) dcMessagesReceived = ((Number) mr).longValue(); + if (mr instanceof Number) + dcMessagesReceived = ((Number) mr).longValue(); } } } @@ -650,8 +652,8 @@ public class MainActivity extends AppCompatActivity { // 依据选定候选对的本地/远端候选类型,返回 P2P / TURN 中继描述。 private String resolveConnectionType(org.webrtc.RTCStatsReport report, - String localCandidateId, - String remoteCandidateId) { + String localCandidateId, + String remoteCandidateId) { String local = candidateTypeOf(report, localCandidateId); String remote = candidateTypeOf(report, remoteCandidateId); boolean isRelay = "relay".equals(local) || "relay".equals(remote); diff --git a/WebRTCController/app/src/main/java/com/ttstd/controller/view/RemoteTouchView.java b/WebRTCController/app/src/main/java/com/ttstd/controller/view/RemoteTouchView.java index 9fbef43..5d02f73 100644 --- a/WebRTCController/app/src/main/java/com/ttstd/controller/view/RemoteTouchView.java +++ b/WebRTCController/app/src/main/java/com/ttstd/controller/view/RemoteTouchView.java @@ -78,6 +78,7 @@ public class RemoteTouchView extends SurfaceView { public boolean onKeyDown(int keyCode, android.view.KeyEvent event) { if (listener != null) { listener.onKeyEvent(keyCode, android.view.KeyEvent.ACTION_DOWN); + Log.d(TAG, "KeyDown: " + keyCode); return true; } return super.onKeyDown(keyCode, event); @@ -87,6 +88,7 @@ public class RemoteTouchView extends SurfaceView { public boolean onKeyUp(int keyCode, android.view.KeyEvent event) { if (listener != null) { listener.onKeyEvent(keyCode, android.view.KeyEvent.ACTION_UP); + Log.d(TAG, "KeyUp: " + keyCode); return true; } return super.onKeyUp(keyCode, event); @@ -111,6 +113,7 @@ public class RemoteTouchView extends SurfaceView { // 发送原始 MotionEvent 实现实时跟手 listener.onMotionEvent(action, relX, relY); + Log.d(TAG, "MotionEvent: " + action + ", " + relX + ", " + relY); switch (action) { case MotionEvent.ACTION_DOWN: @@ -134,8 +137,10 @@ public class RemoteTouchView extends SurfaceView { // 保留旧的回调以防万一,但 MainActivity 现在应该忽略它们 if (duration < 200 && dx < 0.02 && dy < 0.02) { listener.onTouch(lastTouchX, lastTouchY); + Log.d(TAG, "Touch at: " + lastTouchX + ", " + lastTouchY); } else { listener.onSwipe(lastTouchX, lastTouchY, relX, relY, duration); + Log.d(TAG, "Swipe from: " + lastTouchX + ", " + lastTouchY + " to: " + relX + ", " + relY + " duration: " + duration); } return true; }