aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java35
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java27
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java14
3 files changed, 37 insertions, 39 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 3fee6c6f9..d4e3e2928 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -203,6 +203,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
// true if dragging finger is allowed.
private boolean mIsAllowedDraggingFinger;
+ private final GestureStrokeRecognitionPoints mGestureStrokeRecognitionPoints;
private final GestureStrokeDrawingPoints mGestureStrokeDrawingPoints;
// TODO: Add PointerTrackerFactory singleton and move some class static methods into it.
@@ -286,8 +287,9 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private PointerTracker(final int id) {
mPointerId = id;
- mGestureStrokeDrawingPoints = new GestureStrokeDrawingPoints(
- id, sGestureStrokeRecognitionParams, sGestureStrokeDrawingParams);
+ mGestureStrokeRecognitionPoints = new GestureStrokeRecognitionPoints(
+ id, sGestureStrokeRecognitionParams);
+ mGestureStrokeDrawingPoints = new GestureStrokeDrawingPoints(sGestureStrokeDrawingParams);
}
// Returns true if keyboard has been changed by this callback.
@@ -408,7 +410,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
mKeyboardLayoutHasBeenChanged = true;
final int keyWidth = mKeyboard.mMostCommonKeyWidth;
final int keyHeight = mKeyboard.mMostCommonKeyHeight;
- mGestureStrokeDrawingPoints.setKeyboardGeometry(keyWidth, mKeyboard.mOccupiedHeight);
+ mGestureStrokeRecognitionPoints.setKeyboardGeometry(keyWidth, mKeyboard.mOccupiedHeight);
final Key newKey = mKeyDetector.detectHitKey(mKeyX, mKeyY);
if (newKey != mCurrentKey) {
if (sDrawingProxy != null) {
@@ -581,7 +583,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
* @return true if the batch input has started successfully.
*/
private boolean mayStartBatchInput() {
- if (!mGestureStrokeDrawingPoints.isStartOfAGesture()) {
+ if (!mGestureStrokeRecognitionPoints.isStartOfAGesture()) {
return false;
}
if (DEBUG_LISTENER) {
@@ -609,13 +611,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
public void updateBatchInputByTimer(final long syntheticMoveEventTime) {
final int gestureTime = (int)(syntheticMoveEventTime - sGestureFirstDownTime);
- mGestureStrokeDrawingPoints.duplicateLastPointWith(gestureTime);
+ mGestureStrokeRecognitionPoints.duplicateLastPointWith(gestureTime);
updateBatchInput(syntheticMoveEventTime);
}
private void updateBatchInput(final long moveEventTime) {
synchronized (sAggregatedPointers) {
- final GestureStrokeRecognitionPoints stroke = mGestureStrokeDrawingPoints;
+ final GestureStrokeRecognitionPoints stroke = mGestureStrokeRecognitionPoints;
stroke.appendIncrementalBatchPoints(sAggregatedPointers);
final int size = sAggregatedPointers.getPointerSize();
if (size > sLastRecognitionPointSize
@@ -642,7 +644,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
private boolean mayEndBatchInput(final long upEventTime) {
boolean hasEndBatchInputSuccessfully = false;
synchronized (sAggregatedPointers) {
- mGestureStrokeDrawingPoints.appendAllBatchPoints(sAggregatedPointers);
+ mGestureStrokeRecognitionPoints.appendAllBatchPoints(sAggregatedPointers);
if (getActivePointerTrackerCount() == 1) {
hasEndBatchInputSuccessfully = true;
sTypingTimeRecorder.onEndBatchInput(upEventTime);
@@ -754,8 +756,12 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
if (getActivePointerTrackerCount() == 1) {
sGestureFirstDownTime = eventTime;
}
- mGestureStrokeDrawingPoints.onDownEvent(x, y, eventTime, sGestureFirstDownTime,
- sTypingTimeRecorder.getLastLetterTypingTime());
+ final int elapsedTimeSinceFirstDown = (int)(eventTime - sGestureFirstDownTime);
+ final int elapsedTimeSinceLastTyping = (int)(
+ eventTime - sTypingTimeRecorder.getLastLetterTypingTime());
+ mGestureStrokeRecognitionPoints.onDownEvent(x, y, elapsedTimeSinceFirstDown,
+ elapsedTimeSinceLastTyping);
+ mGestureStrokeDrawingPoints.onDownEvent(x, y, elapsedTimeSinceFirstDown);
}
}
@@ -814,11 +820,11 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
if (!mIsDetectingGesture) {
return;
}
- final int beforeLength = mGestureStrokeDrawingPoints.getLength();
- final int gestureTime = (int)(eventTime - sGestureFirstDownTime);
- final boolean onValidArea = mGestureStrokeDrawingPoints.addPointOnKeyboard(
- x, y, gestureTime, isMajorEvent);
- if (mGestureStrokeDrawingPoints.getLength() > beforeLength) {
+ final int beforeLength = mGestureStrokeRecognitionPoints.getLength();
+ final int elapsedTimeSinceFirstDown = (int)(eventTime - sGestureFirstDownTime);
+ final boolean onValidArea = mGestureStrokeRecognitionPoints.addPointOnKeyboard(
+ x, y, elapsedTimeSinceFirstDown, isMajorEvent);
+ if (mGestureStrokeRecognitionPoints.getLength() > beforeLength) {
sTimerProxy.startUpdateBatchInputTimer(this);
}
// If the move event goes out from valid batch input area, cancel batch input.
@@ -826,6 +832,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
cancelBatchInput();
return;
}
+ mGestureStrokeDrawingPoints.onMoveEvent(x, y, elapsedTimeSinceFirstDown);
// If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However,
// the gestured touch points are still being recorded in case the panel is dismissed.
if (isShowingMoreKeysPanel()) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
index 0c09cbcf7..7618682da 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
@@ -20,11 +20,8 @@ import com.android.inputmethod.latin.utils.ResizableIntArray;
/**
* This class holds drawing points to represent a gesture stroke on the screen.
- * TODO: Currently this class extends {@link GestureStrokeRecognitionPoints} that holds recognition
- * points of a gesture stroke. This class should be independent from
- * {@link GestureStrokeRecognitionPoints}.
*/
-public final class GestureStrokeDrawingPoints extends GestureStrokeRecognitionPoints {
+public final class GestureStrokeDrawingPoints {
public static final int PREVIEW_CAPACITY = 256;
private final ResizableIntArray mPreviewEventTimes = new ResizableIntArray(PREVIEW_CAPACITY);
@@ -42,16 +39,11 @@ public final class GestureStrokeDrawingPoints extends GestureStrokeRecognitionPo
private int mLastY;
private double mDistanceFromLastSample;
- public GestureStrokeDrawingPoints(final int pointerId,
- final GestureStrokeRecognitionParams recognitionParams,
- final GestureStrokeDrawingParams drawingParams) {
- super(pointerId, recognitionParams);
+ public GestureStrokeDrawingPoints(final GestureStrokeDrawingParams drawingParams) {
mDrawingParams = drawingParams;
}
- @Override
- protected void reset() {
- super.reset();
+ private void reset() {
mStrokeId++;
mLastPreviewSize = 0;
mLastInterpolatedPreviewIndex = 0;
@@ -64,6 +56,11 @@ public final class GestureStrokeDrawingPoints extends GestureStrokeRecognitionPo
return mStrokeId;
}
+ public void onDownEvent(final int x, final int y, final int elapsedTimeSinceFirstDown) {
+ reset();
+ onMoveEvent(x, y, elapsedTimeSinceFirstDown);
+ }
+
private boolean needsSampling(final int x, final int y) {
mDistanceFromLastSample += Math.hypot(x - mLastX, y - mLastY);
mLastX = x;
@@ -76,16 +73,12 @@ public final class GestureStrokeDrawingPoints extends GestureStrokeRecognitionPo
return false;
}
- @Override
- public boolean addPointOnKeyboard(final int x, final int y, final int time,
- final boolean isMajorEvent) {
+ public void onMoveEvent(final int x, final int y, final int elapsedTimeSinceFirstDown) {
if (needsSampling(x, y)) {
- mPreviewEventTimes.add(time);
+ mPreviewEventTimes.add(elapsedTimeSinceFirstDown);
mPreviewXCoordinates.add(x);
mPreviewYCoordinates.add(y);
}
- return super.addPointOnKeyboard(x, y, time, isMajorEvent);
-
}
/**
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java
index 343c898f9..5d4f5e826 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java
@@ -103,19 +103,17 @@ public class GestureStrokeRecognitionPoints {
return mEventTimes.getLength();
}
- public void onDownEvent(final int x, final int y, final long downTime,
- final long gestureFirstDownTime, final long lastTypingTime) {
+ public void onDownEvent(final int x, final int y, final int elapsedTimeSinceFirstDown,
+ final int elapsedTimeSinceLastTyping) {
reset();
- final long elapsedTimeAfterTyping = downTime - lastTypingTime;
- if (elapsedTimeAfterTyping < mRecognitionParams.mStaticTimeThresholdAfterFastTyping) {
+ if (elapsedTimeSinceLastTyping < mRecognitionParams.mStaticTimeThresholdAfterFastTyping) {
mAfterFastTyping = true;
}
if (DEBUG) {
Log.d(TAG, String.format("[%d] onDownEvent: dT=%3d%s", mPointerId,
- elapsedTimeAfterTyping, mAfterFastTyping ? " afterFastTyping" : ""));
+ elapsedTimeSinceLastTyping, mAfterFastTyping ? " afterFastTyping" : ""));
}
- final int elapsedTimeFromFirstDown = (int)(downTime - gestureFirstDownTime);
- addPointOnKeyboard(x, y, elapsedTimeFromFirstDown, true /* isMajorEvent */);
+ addPointOnKeyboard(x, y, elapsedTimeSinceFirstDown, true /* isMajorEvent */);
}
private int getGestureDynamicDistanceThreshold(final int deltaTime) {
@@ -184,7 +182,7 @@ public class GestureStrokeRecognitionPoints {
}
}
- protected void reset() {
+ private void reset() {
mIncrementalRecognitionSize = 0;
mLastIncrementalBatchSize = 0;
mEventTimes.setLength(0);