Посмотрите на алгоритм на этой странице , поскольку он содержит исходный код, из которого он был получен.
Вот мое резюме того, что делают функции:
addmove: сначала он решает, переместился ли указатель мыши / мышь достаточно далеко, чтобы считаться новой позицией для записи. Если это так, то он определяет, в каком из 8 направлений находится движение, и добавляет его в список ходов.
costLeven: вычисляет расстояние Левенштейна между двумя последовательностями. В этом случае он используется для измерения расстояния между каждой предварительно определенной последовательностью жестов и последовательностью жестов, введенной пользователем. Это в основном используется, чтобы выяснить, какая буква является лучшим выбором для вывода на основе жеста ввода. Небольшое расстояние Левенштейна указывает на лучшее совпадение.
matchGesture (ближайший к meatureGesture): принимает жест, введенный пользователем, и сравнивает его со всеми предопределенными жестами, чтобы найти наилучшее совпадение на основе расстояния Левенштейна. Если совпадение достаточно близко, ключ предопределенного жеста с наилучшим соответствием передается в onGestureListener.onGesture (), который запускает какое-то действие. В этом случае выводит букву на экран.