aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/android/inputmethod/latin/BinaryDictionary.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2010-02-05 14:07:04 -0800
committerAmith Yamasani <yamasani@google.com>2010-02-08 15:22:37 -0800
commit1b62ff1a3d61cd44ab88acdfcbdf0fc70a7e1b10 (patch)
tree17739a10acf4f7f9e70b82ba4d0a2f1c17c914b4 /src/com/android/inputmethod/latin/BinaryDictionary.java
parent8fa317a61a2152347c59dda7eb1b8e2979f6cc1d (diff)
downloadlatinime-1b62ff1a3d61cd44ab88acdfcbdf0fc70a7e1b10.tar.gz
latinime-1b62ff1a3d61cd44ab88acdfcbdf0fc70a7e1b10.tar.xz
latinime-1b62ff1a3d61cd44ab88acdfcbdf0fc70a7e1b10.zip
Increase target size of preferred letters while typing.
This increases the chance of hitting the correct letter when typing a word that exists in the dictionary, rather than only correct it after the fact. It is most effective after 2 or 3 letters of a word have been typed and gets more accurate with more typed letters in the word. If 2 adjacent letters have similar probabilities of occuring, then there is no hit correction applied.
Diffstat (limited to 'src/com/android/inputmethod/latin/BinaryDictionary.java')
-rw-r--r--src/com/android/inputmethod/latin/BinaryDictionary.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/com/android/inputmethod/latin/BinaryDictionary.java b/src/com/android/inputmethod/latin/BinaryDictionary.java
index 68d8b740c..ec467c88d 100644
--- a/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -65,7 +65,8 @@ public class BinaryDictionary extends Dictionary {
private native boolean isValidWordNative(int nativeData, char[] word, int wordLength);
private native int getSuggestionsNative(int dict, int[] inputCodes, int codesSize,
char[] outputChars, int[] frequencies,
- int maxWordLength, int maxWords, int maxAlternatives, int skipPos);
+ int maxWordLength, int maxWords, int maxAlternatives, int skipPos,
+ int[] nextLettersFrequencies, int nextLettersSize);
private final void loadDictionary(Context context, int resId) {
AssetManager am = context.getResources().getAssets();
@@ -74,7 +75,8 @@ public class BinaryDictionary extends Dictionary {
}
@Override
- public void getWords(final WordComposer codes, final WordCallback callback) {
+ public void getWords(final WordComposer codes, final WordCallback callback,
+ int[] nextLettersFrequencies) {
final int codesSize = codes.size();
// Wont deal with really long words.
if (codesSize > MAX_WORD_LENGTH - 1) return;
@@ -90,7 +92,9 @@ public class BinaryDictionary extends Dictionary {
int count = getSuggestionsNative(mNativeDict, mInputCodes, codesSize,
mOutputChars, mFrequencies,
- MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, -1);
+ MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, -1,
+ nextLettersFrequencies,
+ nextLettersFrequencies != null ? nextLettersFrequencies.length : 0);
// If there aren't sufficient suggestions, search for words by allowing wild cards at
// the different character positions. This feature is not ready for prime-time as we need
@@ -100,7 +104,8 @@ public class BinaryDictionary extends Dictionary {
for (int skip = 0; skip < codesSize; skip++) {
int tempCount = getSuggestionsNative(mNativeDict, mInputCodes, codesSize,
mOutputChars, mFrequencies,
- MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, skip);
+ MAX_WORD_LENGTH, MAX_WORDS, MAX_ALTERNATIVES, skip,
+ null, 0);
count = Math.max(count, tempCount);
if (tempCount > 0) break;
}