I'm building an app that depends entirely on gestures I created for the app and being very accurate. So if I say, Draw a star, the user has to draw a star.
Watching the score of each of my gestures, sometimes sloppy lines that don't at all represent a star get a score above 20. This is a bigger problem than the second part.
My second problem is that they may draw a star differently than I do. I start at the bottom left corner. They may start at the top right corner and draw it upside down.
How do I deal with this?
The order problem I solved by setting the sequence and orientation for gestures to "INVARIANT."
gestureLib.setOrientationStyle(GestureStore.ORIENTATION_INVARIANT);
gestureLib.setSequenceType(GestureStore.SEQUENCE_INVARIANT);
More on that here.
For my other problem, I've added a "left" and "right" gesture that each is simply a swipe in their respective direction. If either of them are the most accurate gesture to come back in predictions, I consider it a failure on the user's part. This makes it impossible to bypass the difficulty of my gestures by swiping randomly.
Another thing I did to force accuracy on my gestures... Because my gestures were originally hand-drawn based on my own finger-writing, they weren't guaranteed to be accurate to the symbol in my app that I'm asking users to draw unless their handwriting matched mine. So I modified the GestureBuilder project to show the symbols in the gesture drawing activity and then traced them for as much accuracy as possible. Now when the user draws one of my symbols correctly without sloppiness, the prediction returns a score closer to 30-60 rather than 20-30. This also meant that symbols that were similar, such as capital Greek letter Omega and Omicron (also known as O), are now a lot less similar because of my tracing.