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

Commit d26df2d6 authored by Blazej Magnowski's avatar Blazej Magnowski Committed by Android (Google) Code Review
Browse files

Merge "added DirectionClassifier"

parents 28ec182c 4498d9cd
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.systemui.classifier;

/**
 * A classifier which looks at the general direction of a stroke and evaluates it depending on
 * the type of action that takes place.
 */
public class DirectionClassifier extends StrokeClassifier {
    public DirectionClassifier(ClassifierData classifierData) {
    }

    @Override
    public float getFalseTouchEvaluation(int type, Stroke stroke) {
        Point firstPoint = stroke.getPoints().get(0);
        Point lastPoint = stroke.getPoints().get(stroke.getPoints().size() - 1);
        return DirectionEvaluator.evaluate(lastPoint.x - firstPoint.x, lastPoint.y - firstPoint.y,
                type);
    }
}
 No newline at end of file
+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.systemui.classifier;

public class DirectionEvaluator {
    public static float evaluate(float xDiff, float yDiff, int type) {
        float falsingEvaluation = 5.5f;
        boolean vertical = Math.abs(yDiff) >= Math.abs(xDiff);
        switch (type) {
            case Classifier.QUICK_SETTINGS:
            case Classifier.NOTIFICATION_DRAG_DOWN:
                if (!vertical || yDiff <= 0.0) {
                    return falsingEvaluation;
                }
                break;
            case Classifier.NOTIFICATION_DISMISS:
                if (vertical) {
                    return falsingEvaluation;
                }
                break;
            case Classifier.UNLOCK:
                if (!vertical || yDiff >= 0.0) {
                    return falsingEvaluation;
                }
                break;
            case Classifier.LEFT_AFFORDANCE:
                if (xDiff < 0.0 && yDiff > 0.0) {
                    return falsingEvaluation;
                }
                break;
            case Classifier.RIGHT_AFFORDANCE:
                if (xDiff > 0.0 && yDiff > 0.0) {
                    return falsingEvaluation;
                }
            default:
                break;
        }
        return 0.0f;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public class HumanInteractionClassifier extends Classifier {
        mStrokeClassifiers.add(new AccelerationClassifier(mClassifierData));
        mStrokeClassifiers.add(new SpeedAnglesClassifier(mClassifierData));
        mStrokeClassifiers.add(new LengthCountClassifier(mClassifierData));
        mStrokeClassifiers.add(new DirectionClassifier(mClassifierData));

        mGestureClassifiers.add(new PointerCountClassifier(mClassifierData));
        mGestureClassifiers.add(new ProximityClassifier(mClassifierData));