Load Gesture Libraries : GestureStore « User Event « Android






Load Gesture Libraries

   

        
package app.test;

import java.util.ArrayList;

import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.GestureStore;
import android.gesture.Prediction;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class Test extends Activity implements OnGesturePerformedListener {
    private static final String TAG = "Gesture Revealer";
  GestureLibrary gestureLib = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

//        gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures_letters);
        gestureLib = GestureLibraries.fromFile("/sdcard/gestures");
        gestureLib.setOrientationStyle(GestureStore.ORIENTATION_INVARIANT);
        gestureLib.setSequenceType(GestureStore.SEQUENCE_INVARIANT);

        if (!gestureLib.load()) {
            Toast.makeText(this, "Could not load /sdcard/gestures", Toast.LENGTH_SHORT).show();
            finish();
        }
        Log.v(TAG, "  Orientation style: " + gestureLib.getOrientationStyle());
        Log.v(TAG, "  Sequence type: " + gestureLib.getSequenceType());
        for( String gestureName : gestureLib.getGestureEntries() ) {
          Log.v(TAG, "For gesture " + gestureName);
          int i = 1;
            for( Gesture gesture : gestureLib.getGestures(gestureName) ) {
              Log.v(TAG, "    " + i + ": ID: " + gesture.getID());
              Log.v(TAG, "    " + i + ": Strokes count: " + gesture.getStrokesCount());
              Log.v(TAG, "    " + i + ": Stroke length: " + gesture.getLength());
              i++;
            }
        }

        GestureOverlayView gestureView = (GestureOverlayView) findViewById(R.id.gestureOverlay);
        gestureView.addOnGesturePerformedListener(this);
        gestureView.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);
    }

  public void onGesturePerformed(GestureOverlayView view, Gesture gesture) {
      ArrayList<Prediction> predictions = gestureLib.recognize(gesture);
      if (predictions.size() > 0) {
          Prediction prediction = (Prediction) predictions.get(0);
          if (prediction.score > 1.0) {
              Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
              for(int i=0;i<predictions.size();i++)
                Log.v(TAG, "prediction " + predictions.get(i).name +
                    " - score = " + predictions.get(i).score);
          }
      }
  }
}

//main.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/layout/main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"  android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent"  android:layout_height="wrap_content" 
    android:text="Draw gestures and I'll guess what they are"
    />
    
<android.gesture.GestureOverlayView
    android:id="@+id/gestureOverlay"
    android:layout_width="fill_parent"  android:layout_height="fill_parent"
    android:gestureStrokeType="multiple"  android:fadeOffset="1000"
    />

</LinearLayout>

   
    
    
  








Related examples in the same category

1.Set Orientation Style: GestureStore.ORIENTATION_INVARIANT
2.Guesture Builder
3.Set Gesture Sequence Type
4.List Gesture libray information
5.Gesture Recognition