From 3c2f51c994a258663edd5de0788bdd5d96b4c981 Mon Sep 17 00:00:00 2001 From: Maryam Karimzadehgan Date: Wed, 28 Oct 2020 15:36:50 -0700 Subject: [PATCH] Add flag to get the name of the Model file from the flag in case we want to try out different models. In addition, we should not log touches in the middle of the screen for logging so moving the block at the very beginning. Test: unittest, manual test Bug: 150170384 Change-Id: I6ecb556fea01f26323248b999d17c7b1d1b7eeb7 --- .../sysui/SystemUiDeviceConfigFlags.java | 5 +++ .../com/android/systemui/SystemUIFactory.java | 2 +- .../gestural/EdgeBackGestureHandler.java | 34 +++++++++++-------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java index a2af4d6cf456c..777534e72d736 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java @@ -429,6 +429,11 @@ public final class SystemUiDeviceConfigFlags { */ public static final String USE_BACK_GESTURE_ML_MODEL = "use_back_gesture_ml_model"; + /** + * (string) The name of the ML model for Back Gesture. + */ + public static final String BACK_GESTURE_ML_MODEL_NAME = "back_gesture_ml_model_name"; + /** * (float) Threshold for Back Gesture ML model prediction. */ diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java index d8e94bb45b756..b30103ef9b59f 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java @@ -188,7 +188,7 @@ public class SystemUIFactory { * This method is overridden in vendor specific implementation of Sys UI. */ public BackGestureTfClassifierProvider createBackGestureTfClassifierProvider( - AssetManager am) { + AssetManager am, String modelName) { return new BackGestureTfClassifierProvider(); } } \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index 18cc746666d86..f9982d04e04b4 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -137,7 +137,9 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa && (properties.getKeyset().contains( SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_THRESHOLD) || properties.getKeyset().contains( - SystemUiDeviceConfigFlags.USE_BACK_GESTURE_ML_MODEL))) { + SystemUiDeviceConfigFlags.USE_BACK_GESTURE_ML_MODEL) + || properties.getKeyset().contains( + SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_NAME))) { updateMLModelState(); } } @@ -483,14 +485,15 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa private void updateMLModelState() { boolean newState = mIsEnabled && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.USE_BACK_GESTURE_ML_MODEL, false); - if (newState == mUseMLModel) { return; } if (newState) { + String mlModelName = DeviceConfig.getString(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_NAME, "backgesture"); mBackGestureTfClassifierProvider = SystemUIFactory.getInstance() - .createBackGestureTfClassifierProvider(mContext.getAssets()); + .createBackGestureTfClassifierProvider(mContext.getAssets(), mlModelName); mMLModelThreshold = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_THRESHOLD, 0.9f); if (mBackGestureTfClassifierProvider.isActive()) { @@ -540,21 +543,22 @@ public class EdgeBackGestureHandler extends CurrentUserTracker implements Displa boolean withinRange = false; float results = -1; + // Disallow if we are in the bottom gesture area + if (y >= (mDisplaySize.y - mBottomGestureHeight)) { + return false; + } + // If the point is way too far (twice the margin), it is + // not interesting to us for logging purposes, nor we + // should process it. Simply return false and keep + // mLogGesture = false. + if (x > 2 * (mEdgeWidthLeft + mLeftInset) + && x < (mDisplaySize.x - 2 * (mEdgeWidthRight + mRightInset))) { + return false; + } + if (mUseMLModel && (results = getBackGesturePredictionsCategory(x, y)) != -1) { withinRange = results == 1 ? true : false; } else { - // Disallow if we are in the bottom gesture area - if (y >= (mDisplaySize.y - mBottomGestureHeight)) { - return false; - } - // If the point is way too far (twice the margin), it is - // not interesting to us for logging purposes, nor we - // should process it. Simply return false and keep - // mLogGesture = false. - if (x > 2 * (mEdgeWidthLeft + mLeftInset) - && x < (mDisplaySize.x - 2 * (mEdgeWidthRight + mRightInset))) { - return false; - } // Denotes whether we should proceed with the gesture. // Even if it is false, we may want to log it assuming // it is not invalid due to exclusion.