diff --git a/core/java/android/gesture/GestureLibrary.java b/core/java/android/gesture/GestureLibrary.java index 9020d2bafc056..1cf192ec34461 100644 --- a/core/java/android/gesture/GestureLibrary.java +++ b/core/java/android/gesture/GestureLibrary.java @@ -136,7 +136,7 @@ public class GestureLibrary { * @return a list of predictions of possible entries for a given gesture */ public ArrayList recognize(Gesture gesture) { - Instance instance = Instance.createInstance(mSequenceType, mOrientationStyle, gesture, null); + Instance instance = Instance.createInstance(mSequenceType, gesture, null); return mClassifier.classify(mSequenceType, instance.vector); } @@ -156,7 +156,7 @@ public class GestureLibrary { mNamedGestures.put(entryName, gestures); } gestures.add(gesture); - mClassifier.addInstance(Instance.createInstance(mSequenceType, mOrientationStyle, gesture, entryName)); + mClassifier.addInstance(Instance.createInstance(mSequenceType, gesture, entryName)); mChanged = true; } @@ -337,14 +337,10 @@ public class GestureLibrary { for (int j = 0; j < gestureCount; j++) { final Gesture gesture = Gesture.deserialize(in); gestures.add(gesture); - classifier.addInstance(Instance.createInstance(mSequenceType, mOrientationStyle, gesture, name)); + classifier.addInstance(Instance.createInstance(mSequenceType, gesture, name)); } namedGestures.put(name, gestures); } } - - Learner getLearner() { - return mClassifier; - } } diff --git a/core/java/android/gesture/GestureStroke.java b/core/java/android/gesture/GestureStroke.java index 90faaed6430f4..0d7bc2d049d4e 100644 --- a/core/java/android/gesture/GestureStroke.java +++ b/core/java/android/gesture/GestureStroke.java @@ -17,6 +17,7 @@ package android.gesture; import android.graphics.Canvas; +import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; @@ -146,12 +147,10 @@ public class GestureStroke { final float[] pts = GestureUtilities.temporalSampling(this, numSample); final RectF rect = boundingBox; - GestureUtilities.translate(pts, -rect.left, -rect.top); - - float sx = width / rect.width(); - float sy = height / rect.height(); - float scale = sx > sy ? sy : sx; - GestureUtilities.scale(pts, scale, scale); + final Matrix matrix = new Matrix(); + matrix.setTranslate(-rect.left, -rect.top); + matrix.postScale(width / rect.width(), height / rect.height()); + matrix.mapPoints(pts); float mX = 0; float mY = 0; diff --git a/core/java/android/gesture/GestureUtilities.java b/core/java/android/gesture/GestureUtilities.java index 3e8a3c836712c..4a3144c2f0b74 100755 --- a/core/java/android/gesture/GestureUtilities.java +++ b/core/java/android/gesture/GestureUtilities.java @@ -17,6 +17,7 @@ package android.gesture; import android.graphics.RectF; +import android.graphics.Matrix; import android.util.Log; import java.util.ArrayList; @@ -379,17 +380,22 @@ final class GestureUtilities { } static OrientedBoundingBox computeOrientedBoundingBox(float[] points, float[] centroid) { - translate(points, -centroid[0], -centroid[1]); + Matrix tr = new Matrix(); + tr.setTranslate(-centroid[0], -centroid[1]); + tr.mapPoints(points); double[][] array = computeCoVariance(points); double[] targetVector = computeOrientation(array); float angle; if (targetVector[0] == 0 && targetVector[1] == 0) { - angle = (float) -Math.PI/2; + angle = -90; } else { // -PI classify(int sequenceType, float[] vector) { + ArrayList classify(int gestureType, float[] vector) { ArrayList predictions = new ArrayList(); ArrayList instances = getInstances(); int count = instances.size(); @@ -38,7 +43,7 @@ class InstanceLearner extends Learner { continue; } double distance; - if (sequenceType == GestureLibrary.SEQUENCE_SENSITIVE) { + if (gestureType == GestureLibrary.SEQUENCE_SENSITIVE) { distance = GestureUtilities.cosineDistance(sample.vector, vector); } else { distance = GestureUtilities.squaredEuclideanDistance(sample.vector, vector);