aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values/config.xml2
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java49
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java17
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java2
4 files changed, 38 insertions, 32 deletions
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 32b54447c..b3dbb0ee5 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -81,7 +81,7 @@
<integer name="config_gesture_dynamic_time_threshold_to">20</integer>
<!-- Distance based threshold values for gesture detection (keyWidth%/sec) -->
<fraction name="config_gesture_dynamic_distance_threshold_from">600%</fraction>
- <fraction name="config_gesture_dynamic_distance_threshold_to">50%</fraction>
+ <fraction name="config_gesture_dynamic_distance_threshold_to">35%</fraction>
<!-- Parameter for gesture sampling (keyWidth%/sec) -->
<fraction name="config_gesture_sampling_minimum_distance">16.6666%</fraction>
<!-- Parameters for gesture recognition (msec) and (keyWidth%/sec) -->
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 361053337..82c77d6cd 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -192,32 +192,47 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
gestureStrokeParams.mStaticTimeThresholdAfterFastTyping;
}
- private boolean wasLastInputTyping() {
- return mLastTypingTime >= mLastBatchInputTime;
+ private void recordTyping(final long eventTime) {
+ mLastTypingTime = eventTime;
+ }
+
+ private void recordLetterTyping(final long eventTime) {
+ mLastLetterTypingTime = eventTime;
+ // Reset gesture typing time
+ mLastBatchInputTime = 0;
+ }
+
+ private void recordGestureTyping(final long eventTime) {
+ mLastBatchInputTime = eventTime;
+ // Reset typing time.
+ mLastTypingTime = 0;
+ }
+
+ private boolean isInTyping() {
+ return mLastTypingTime != 0;
+ }
+
+ private boolean isInBatchInput() {
+ return mLastBatchInputTime != 0;
}
public void onCodeInput(final int code, final long eventTime) {
- // Record the letter typing time when
- // 1. Letter keys are typed successively without any batch input in between.
- // 2. A letter key is typed within the threshold time since the last any key typing.
- // 3. A non-letter key is typed within the threshold time since the last letter key
- // typing.
- if (Character.isLetter(code)) {
- if (wasLastInputTyping()
- || eventTime - mLastTypingTime < mStaticTimeThresholdAfterFastTyping) {
- mLastLetterTypingTime = eventTime;
+ if (Keyboard.isLetterCode(code) && code != Keyboard.CODE_SPACE) {
+ if (isInTyping()
+ && eventTime - mLastTypingTime < mStaticTimeThresholdAfterFastTyping) {
+ recordLetterTyping(eventTime);
}
} else {
if (eventTime - mLastLetterTypingTime < mStaticTimeThresholdAfterFastTyping) {
// This non-letter typing should be treated as a part of fast typing.
- mLastLetterTypingTime = eventTime;
+ recordLetterTyping(eventTime);
}
}
- mLastTypingTime = eventTime;
+ recordTyping(eventTime);
}
public void onEndBatchInput(final long eventTime) {
- mLastBatchInputTime = eventTime;
+ recordGestureTyping(eventTime);
}
public long getLastLetterTypingTime() {
@@ -225,7 +240,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
}
public boolean needsToSuppressKeyPreviewPopup(final long eventTime) {
- return !wasLastInputTyping()
+ return !isInTyping() && isInBatchInput()
&& eventTime - mLastBatchInputTime < mSuppressKeyPreviewAfterBatchInputDuration;
}
}
@@ -836,13 +851,11 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
// Register move event on gesture tracker.
onGestureMoveEvent(x, y, eventTime, true /* isMajorEvent */, key);
if (sInGesture) {
+ mTimerProxy.cancelLongPressTimer();
mCurrentKey = null;
setReleasedKeyGraphics(oldKey);
return;
}
- if (mGestureStrokeWithPreviewPoints.hasDetectedFastMove()) {
- mTimerProxy.cancelLongPressTimer();
- }
}
if (key != null) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
index c406f0c4f..9b1a20159 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
@@ -190,8 +190,8 @@ public class GestureStroke {
return mParams.mDynamicTimeThresholdFrom - decayedThreshold;
}
- public final boolean isStartOfAGesture() {
- if (!hasDetectedFastMove()) {
+ public boolean isStartOfAGesture() {
+ if (mDetectFastMoveTime == 0) {
return false;
}
final int size = mEventTimes.getLength();
@@ -200,9 +200,6 @@ public class GestureStroke {
}
final int lastIndex = size - 1;
final int deltaTime = mEventTimes.get(lastIndex) - mDetectFastMoveTime;
- if (deltaTime < 0) {
- return false;
- }
final int deltaDistance = getDistance(
mXCoordinates.get(lastIndex), mYCoordinates.get(lastIndex),
mDetectFastMoveX, mDetectFastMoveY);
@@ -243,10 +240,6 @@ public class GestureStroke {
mLastMajorEventY = y;
}
- public final boolean hasDetectedFastMove() {
- return mDetectFastMoveTime > 0;
- }
-
private int detectFastMove(final int x, final int y, final int time) {
final int size = mEventTimes.getLength();
final int lastIndex = size - 1;
@@ -262,7 +255,7 @@ public class GestureStroke {
Log.d(TAG, String.format("[%d] detectFastMove: speed=%5.2f", mPointerId, speed));
}
// Equivalent to (pixels / msecs < mStartSpeedThreshold / MSEC_PER_SEC)
- if (!hasDetectedFastMove() && pixelsPerSec > mDetectFastMoveSpeedThreshold * msecs) {
+ if (mDetectFastMoveTime == 0 && pixelsPerSec > mDetectFastMoveSpeedThreshold * msecs) {
if (DEBUG) {
final float speed = (float)pixelsPerSec / msecs / mKeyWidth;
Log.d(TAG, String.format(
@@ -313,11 +306,11 @@ public class GestureStroke {
return currentTime > lastRecognitionTime + mParams.mRecognitionMinimumTime;
}
- public final void appendAllBatchPoints(final InputPointers out) {
+ public void appendAllBatchPoints(final InputPointers out) {
appendBatchPoints(out, mEventTimes.getLength());
}
- public final void appendIncrementalBatchPoints(final InputPointers out) {
+ public void appendIncrementalBatchPoints(final InputPointers out) {
appendBatchPoints(out, mIncrementalRecognitionSize);
}
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 201a10187..fa9f79ecd 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -350,7 +350,7 @@ final class BinaryDictionaryGetter {
// of the dictionary would lose whitelist functionality.
private static boolean hackCanUseDictionaryFile(final Locale locale, final File f) {
// Only for English - other languages didn't have a whitelist, hence this
- // ad-hoc ## HACK ##
+ // ad-hock ## HACK ##
if (!Locale.ENGLISH.getLanguage().equals(locale.getLanguage())) return true;
FileInputStream inStream = null;