summaryrefslogtreecommitdiff
path: root/src/us
diff options
context:
space:
mode:
Diffstat (limited to 'src/us')
-rw-r--r--src/us/minak/IMEService.java7
-rw-r--r--src/us/minak/IMEView.java23
-rw-r--r--src/us/minak/SketchpadView.java~50
3 files changed, 79 insertions, 1 deletions
diff --git a/src/us/minak/IMEService.java b/src/us/minak/IMEService.java
index ba09656..6064be9 100644
--- a/src/us/minak/IMEService.java
+++ b/src/us/minak/IMEService.java
@@ -18,7 +18,12 @@ public class IMEService extends InputMethodService {
public View onCreateInputView() {
final IMEView view = (IMEView) getLayoutInflater().inflate(R.layout.ime, null);
- // TODO: there probably needs to be more stuff here
+ view.setOnCharacterEnteredListener(new OnCharacterEnteredListener() {
+ @Override
+ public void characterEntered(String character) {
+ getCurrentInputConnection().commitText(character, 1);
+ }
+ });
this.imeView = view;
return view;
diff --git a/src/us/minak/IMEView.java b/src/us/minak/IMEView.java
index 89d6d0a..d341ae5 100644
--- a/src/us/minak/IMEView.java
+++ b/src/us/minak/IMEView.java
@@ -5,7 +5,30 @@ import android.util.AttributeSet;
import android.widget.RelativeLayout;
public class IMEView extends RelativeLayout{
+ private final Context mContext;
+ private OnCharacterEnteredListener mOnCharacterEnteredListener;
public IMEView(Context context, AttributeSet attrs) {
super(context, attrs);
+ mContext = context;
+ }
+
+ @Override
+ protected void onFinishInflate() {
+ DrawingSpaceView drawingSpaceView = (DrawingSpaceView) findViewById(R.id.drawing_space);
+ drawingSpaceView.setOnGestureRecognizedListener(new OnGestureRecognizedListener() {
+ @Override
+ public void gestureRecognized(String character) {
+ enterCharacter(character);
+ }
+
+ });
+ }
+
+ public void setOnCharacterEnteredListener(OnCharacterEnteredListener onCharacterEnteredListener) {
+ mOnCharacterEnteredListener = onCharacterEnteredListener;
+ }
+
+ private void enterCharacter(String character) {
+ mOnCharacterEnteredListener.characterEntered(character);
}
}
diff --git a/src/us/minak/SketchpadView.java~ b/src/us/minak/SketchpadView.java~
new file mode 100644
index 0000000..55d69fd
--- /dev/null
+++ b/src/us/minak/SketchpadView.java~
@@ -0,0 +1,50 @@
+import java.util.List;
+
+import android.gesture.Gesture;
+import android.gesture.GestureLibraries;
+import android.gesture.GestureLibrary;
+import android.gesture.GestureOverlayView;
+import android.gesture.GestureOverlayView.OnGesturePerformedListener;
+import android.gesture.Prediction;
+
+public class SketchpadView extends GestureOverlayView implements OnGesturePerformedListener{
+ //Setting score thresh hold
+ private static final double score_threshold = 3.0;
+ //loads gesture library
+ private final GestureLibrary gestureLib;
+ //used to capture drawn gestures
+ private onGestureRecognizedListener gestureRecognizer;
+
+ public SketchpadView (){
+ //not sure what to add here
+ }
+
+ public void setOnGestureRecognizedListener(OnGestureRecognizedListener onGestureRecognizedListener) {
+ gestureRecognizer = onGestureRecognizedListener;
+ }
+
+ @Override
+ public void onGesturePerformed(GestureOverlayView view, Gesture gesture){
+ //create list of predicted characters to be entered
+ List<Prediction> predictions = gestureLib.recognize(gesture);
+ Prediction bestPrediction = null;
+ //if we have a prediction
+ if(!predictions.isEmpty()){
+ //I believe that this just blidnly adds a predicted character without any checks
+ //we need to see if there is a way to actual get the best prediction
+ //if this lists them based on the best, then fuck me and ignore this/delete this
+ bestPrediction = predictions.get(0);
+ }
+ //if we have a gesture and a decent prediction
+ if(gestureRecognizer != null && bestPrediction != null){
+ //if the prediction is good enough
+ if(bestPrediction.score > score_threshold){
+ //we recognize it
+ gestureRecognizer.gestureRecognized(bestPrediction.name);
+ }else{
+ //why?
+ clear(false);
+ }
+ }
+ }
+}