Stabilize gesture recognition algorithm that looks for the nearest key.

It relies on the order of the key array.

Change-Id: I58fa71a7b330e59cd774fc208e5b6bc1a3decd2e
main
Ken Wakasa 2012-09-11 19:15:00 +09:00
parent b0c693d005
commit e30c4e0bb1
2 changed files with 12 additions and 5 deletions

View File

@ -52,7 +52,7 @@ import java.util.Locale;
/**
* Class for describing the position and characteristics of a single key in the keyboard.
*/
public class Key {
public class Key implements Comparable<Key> {
private static final String TAG = Key.class.getSimpleName();
/**
@ -410,7 +410,7 @@ public class Key {
});
}
private boolean equals(final Key o) {
private boolean equalsInternal(final Key o) {
if (this == o) return true;
return o.mX == mX
&& o.mY == mY
@ -427,6 +427,13 @@ public class Key {
&& o.mLabelFlags == mLabelFlags;
}
@Override
public int compareTo(Key o) {
if (equalsInternal(o)) return 0;
if (mHashCode > o.mHashCode) return 1;
return -1;
}
@Override
public int hashCode() {
return mHashCode;
@ -434,7 +441,7 @@ public class Key {
@Override
public boolean equals(final Object o) {
return o instanceof Key && equals((Key)o);
return o instanceof Key && equalsInternal((Key)o);
}
@Override

View File

@ -24,7 +24,7 @@ import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.latin.CollectionUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.TreeSet;
public class KeyboardParams {
public KeyboardId mId;
@ -58,7 +58,7 @@ public class KeyboardParams {
public int GRID_WIDTH;
public int GRID_HEIGHT;
public final HashSet<Key> mKeys = CollectionUtils.newHashSet();
public final TreeSet<Key> mKeys = CollectionUtils.newTreeSet(); // ordered set
public final ArrayList<Key> mShiftKeys = CollectionUtils.newArrayList();
public final ArrayList<Key> mAltCodeKeysWhileTyping = CollectionUtils.newArrayList();
public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();