Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6e60c99 authored by Steve Pfetsch's avatar Steve Pfetsch Committed by android-build-merger
Browse files

Merge "Relax angle-related false touch classification." into pi-dev

am: 7f3e5bb0

Change-Id: I50cfd5c0caef979479f6880b163317261c57c997
parents 5731a280 7f3e5bb0
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.systemui.classifier;

import android.os.Build;
import android.os.SystemProperties;
import android.util.Log;
import android.view.MotionEvent;

import java.util.ArrayList;
@@ -49,13 +52,18 @@ import java.util.List;
public class AnglesClassifier extends StrokeClassifier {
    private HashMap<Stroke, Data> mStrokeMap = new HashMap<>();

    public static final boolean VERBOSE = SystemProperties.getBoolean("debug.falsing_log.ang",
            Build.IS_DEBUGGABLE);

    private static String TAG = "ANG";

    public AnglesClassifier(ClassifierData classifierData) {
        mClassifierData = classifierData;
    }

    @Override
    public String getTag() {
        return "ANG";
        return TAG;
    }

    @Override
@@ -170,18 +178,31 @@ public class AnglesClassifier extends StrokeClassifier {

        public float getAnglesVariance() {
            float anglesVariance = getAnglesVariance(mSumSquares, mSum, mCount);
            if (VERBOSE) {
                FalsingLog.i(TAG, "getAnglesVariance: (first pass) " + anglesVariance);
                FalsingLog.i(TAG, "   - mFirstLength=" + mFirstLength);
                FalsingLog.i(TAG, "   - mLength=" + mLength);
            }
            if (mFirstLength < mLength / 2f) {
                anglesVariance = Math.min(anglesVariance, mFirstAngleVariance
                        + getAnglesVariance(mSecondSumSquares, mSecondSum, mSecondCount));
                if (VERBOSE) FalsingLog.i(TAG, "getAnglesVariance: (second pass) " + anglesVariance);
            }
            return anglesVariance;
        }

        public float getAnglesPercentage() {
            if (mAnglesCount == 0.0f) {
                if (VERBOSE) FalsingLog.i(TAG, "getAnglesPercentage: count==0, result=1");
                return 1.0f;
            }
            return (Math.max(mLeftAngles, mRightAngles) + mStraightAngles) / mAnglesCount;
            final float result = (Math.max(mLeftAngles, mRightAngles) + mStraightAngles) / mAnglesCount;
            if (VERBOSE) {
                FalsingLog.i(TAG, "getAnglesPercentage: left=" + mLeftAngles + " right="
                        + mRightAngles + " straight=" + mStraightAngles + " count=" + mAnglesCount
                        + " result=" + result);
            }
            return result;
        }
    }
}
+0 −2
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@ public class AnglesVarianceEvaluator {
    public static float evaluate(float value, int type) {
        final boolean secureUnlock = type == Classifier.BOUNCER_UNLOCK;
        float evaluation = 0.0f;
        if (value > 0.05) evaluation++;
        if (value > 0.10) evaluation++;
        if (value > 0.20) evaluation++;
        if (value > 0.40 && !secureUnlock) evaluation++;
        if (value > 0.80 && !secureUnlock) evaluation++;
+19 −3
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.classifier;

import android.os.Build;
import android.os.SystemProperties;
import android.view.MotionEvent;

import java.util.ArrayList;
@@ -34,6 +36,10 @@ import java.util.List;
 * should be in this interval.
 */
public class SpeedAnglesClassifier extends StrokeClassifier {
    public static final boolean VERBOSE = SystemProperties.getBoolean("debug.falsing_log.spd_ang",
            Build.IS_DEBUGGABLE);
    public static final String TAG = "SPD_ANG";

    private HashMap<Stroke, Data> mStrokeMap = new HashMap<>();

    public SpeedAnglesClassifier(ClassifierData classifierData) {
@@ -42,7 +48,7 @@ public class SpeedAnglesClassifier extends StrokeClassifier {

    @Override
    public String getTag() {
        return "SPD_ANG";
        return TAG;
    }

    @Override
@@ -135,14 +141,24 @@ public class SpeedAnglesClassifier extends StrokeClassifier {
        }

        public float getAnglesVariance() {
            return mSumSquares / mCount - (mSum / mCount) * (mSum / mCount);
            final float v = mSumSquares / mCount - (mSum / mCount) * (mSum / mCount);
            if (VERBOSE) {
                FalsingLog.i(TAG, "getAnglesVariance: sum^2=" + mSumSquares
                        + " count=" + mCount + " result=" + v);
            }
            return v;
        }

        public float getAnglesPercentage() {
            if (mAnglesCount == 0.0f) {
                return 1.0f;
            }
            return (mAcceleratingAngles) / mAnglesCount;
            final float v = (mAcceleratingAngles) / mAnglesCount;
            if (VERBOSE) {
                FalsingLog.i(TAG, "getAnglesPercentage: angles=" + mAcceleratingAngles
                        + " count=" + mAnglesCount + " result=" + v);
            }
            return v;
        }
    }
}
 No newline at end of file