Using android gesture on top of menu buttons
        Posted  
        
            by chriacua
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by chriacua
        
        
        
        Published on 2010-02-02T14:56:52Z
        Indexed on 
            2010/04/13
            6:42 UTC
        
        
        Read the original article
        Hit count: 463
        
android
|gesture-recognition
What I want is to have an options menu where the user can choose to navigate the menu between: 1) touching a button and then pressing down on the trackball to select it, and 2) drawing predefined gestures from Gestures Builder
As it stands now, I have created my buttons with OnClickListener and the gestures with GestureOverlayView. Then I select starting a new Activity depending on whether the using pressed a button or executed a gesture. However, when I attempt to draw a gesture, it is not picked up. Only pressing the buttons is recognized. The following is my code:
public class Menu extends Activity implements OnClickListener, OnGesturePerformedListener {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //create TextToSpeech
    myTTS = new TextToSpeech(this, this);
    myTTS.setLanguage(Locale.US);
    //create Gestures
    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
    if (!mLibrary.load()) {
     finish();
    }
    // Set up click listeners for all the buttons.
    View playButton = findViewById(R.id.play_button);
    playButton.setOnClickListener(this);
    View instructionsButton = findViewById(R.id.instructions_button);
    instructionsButton.setOnClickListener(this);
    View modeButton = findViewById(R.id.mode_button);
    modeButton.setOnClickListener(this);
    View statsButton = findViewById(R.id.stats_button);
    statsButton.setOnClickListener(this);
    View exitButton = findViewById(R.id.exit_button);
    exitButton.setOnClickListener(this);
    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
    gestures.addOnGesturePerformedListener(this);
}
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
  ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
 // We want at least one prediction
 if (predictions.size() > 0) {
 Prediction prediction = predictions.get(0);
 // We want at least some confidence in the result
 if (prediction.score > 1.0) {
  // Show the gesture
   Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
   //User drew symbol for PLAY
    if (prediction.name.equals("Play")) {
       myTTS.shutdown();
       //connect to game
      // User drew symbol for INSTRUCTIONS
     } else if (prediction.name.equals("Instructions")) {
           myTTS.shutdown();
           startActivity(new Intent(this, Instructions.class));
       // User drew symbol for MODE
   } else if (prediction.name.equals("Mode")){
      myTTS.shutdown();
      startActivity(new Intent(this, Mode.class));
       // User drew symbol to QUIT
  } else {
      finish();
   }
  }
 }
}
@Override
    public void onClick(View v) {
      switch (v.getId()){
      case R.id.instructions_button:
         startActivity(new Intent(this, Instructions.class));
         break;
      case R.id.mode_button:
         startActivity(new Intent(this, Mode.class));
         break;
      case R.id.exit_button:
         finish();
         break;
  }  
}
Any suggestions would be greatly appreciated!
© Stack Overflow or respective owner