From 24d91936aa28b6266f5007534a6b722181403a20 Mon Sep 17 00:00:00 2001 From: Mark Chang Date: Fri, 12 May 2023 07:40:31 +0000 Subject: Revise calling API for Android U. Bug: 282117475 Test: Manual, WALT drag test is working. Change-Id: Iabc61a3a2d982af20f66d959713f92a5b7f12532 Signed-off-by: Mark Chang --- .../chromium/latency/walt/TouchCatcherView.java | 8 ++++ .../org/chromium/latency/walt/UsMotionEvent.java | 51 ++++++++++++++++------ android/WALT/app/src/main/res/values/strings.xml | 2 +- 3 files changed, 46 insertions(+), 15 deletions(-) (limited to 'android/WALT/app/src/main') diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/TouchCatcherView.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/TouchCatcherView.java index 9e04056..7683612 100644 --- a/android/WALT/app/src/main/java/org/chromium/latency/walt/TouchCatcherView.java +++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/TouchCatcherView.java @@ -28,6 +28,7 @@ import android.view.View; public class TouchCatcherView extends View { private Paint linePaint = new Paint(); + private Paint centerLinePaint = new Paint(); // for positioning the laser private WaltDevice waltDevice; private boolean isAnimated = false; @@ -54,8 +55,11 @@ public class TouchCatcherView extends View { private void initialisePaint() { float density = getResources().getDisplayMetrics().density; float lineWidth = 10f * density; + float centerLineWidth = 3f * density; linePaint.setColor(Color.GREEN); linePaint.setStrokeWidth(lineWidth); + centerLinePaint.setColor(Color.GREEN); + centerLinePaint.setStrokeWidth(centerLineWidth); } public static double markerPosition(long t_us, int period_us) { @@ -88,11 +92,15 @@ public class TouchCatcherView extends View { int h = getHeight(); double normPos = markerPosition(waltDevice.clock.micros(), animationPeriod_us); int pos = (int) (h * (0.5 + animationAmplitude * normPos)); + int centerPos = (int) (h * 0.5); // Log.i("AnimatedView", "Pos is " + pos); int w = getWidth(); int lineStart = (int) (w * (1 - lineLength) / 2); int lineEnd = (int) (w * (1 + lineLength) / 2); + + canvas.drawLine(0, centerPos, lineStart, centerPos, centerLinePaint); + canvas.drawLine(lineEnd, centerPos, w - 1, centerPos, centerLinePaint); canvas.drawLine(lineStart, pos, lineEnd, pos, linePaint); // Run every frame diff --git a/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java b/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java index f68e461..2882ca0 100644 --- a/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java +++ b/android/WALT/app/src/main/java/org/chromium/latency/walt/UsMotionEvent.java @@ -108,6 +108,31 @@ public class UsMotionEvent { return "UNKNOWN_ACTION"; } + private long getEventTimeNanos(MotionEvent event, boolean preAndroidU) { + long t_nanos = -1; + final String methodName = preAndroidU ? "getEventTimeNano" : "getEventTimeNanos"; + try { + Class cls = Class.forName("android.view.MotionEvent"); + Method myTimeGetter = cls.getMethod(methodName); + t_nanos = (long) myTimeGetter.invoke(event); + } catch (Exception e) { + } + return t_nanos; + } + + private long getHistoricalEventTimeNanos(MotionEvent event, int pos, boolean preAndroidU) { + long t_nanos = -1; + final String methodName = + preAndroidU ? "getHistoricalEventTimeNano" : "getHistoricalEventTimeNanos"; + try { + Class cls = Class.forName("android.view.MotionEvent"); + Method myTimeGetter = cls.getMethod(methodName, new Class[]{int.class}); + t_nanos = (long) myTimeGetter.invoke(event, new Object[]{pos}); + } catch (Exception e) { + } + return t_nanos; + } + /** MotionEvent.getEventTime() function only provides millisecond resolution. There is a MotionEvent.getEventTimeNano() function but for some reason it @@ -119,27 +144,25 @@ public class UsMotionEvent { */ private long getEventTimeMicro(MotionEvent event) { long t_nanos = -1; - try { - Class cls = Class.forName("android.view.MotionEvent"); - Method myTimeGetter = cls.getMethod("getEventTimeNano"); - t_nanos = (long) myTimeGetter.invoke(event); - } catch (Exception e) { - Log.i("WALT.MsMotionEvent", e.getMessage()); + t_nanos = getEventTimeNanos(event, false); + if (t_nanos == -1) { + t_nanos = getEventTimeNanos(event, true); + if (t_nanos == -1) { + Log.i("WALT.UsMotionEvent", "getEventTimeNanos failed."); + } } - return t_nanos / 1000; } private long getHistoricalEventTimeMicro(MotionEvent event, int pos) { long t_nanos = -1; - try { - Class cls = Class.forName("android.view.MotionEvent"); - Method myTimeGetter = cls.getMethod("getHistoricalEventTimeNano", new Class[] {int.class}); - t_nanos = (long) myTimeGetter.invoke(event, new Object[]{pos}); - } catch (Exception e) { - Log.i("WALT.MsMotionEvent", e.getMessage()); + t_nanos = getHistoricalEventTimeNanos(event, pos, false); + if (t_nanos == -1) { + t_nanos = getHistoricalEventTimeNanos(event, pos, true); + if (t_nanos == -1) { + Log.i("WALT.UsMotionEvent", "getHistoricalEventTimeNanos failed."); + } } - return t_nanos / 1000; } diff --git a/android/WALT/app/src/main/res/values/strings.xml b/android/WALT/app/src/main/res/values/strings.xml index bc83273..1b453bf 100644 --- a/android/WALT/app/src/main/res/values/strings.xml +++ b/android/WALT/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - WALT + WALT v0.1.10 Crash Log WALT reports protocol version %1$s, which is not -- cgit v1.2.3