2013-08-10 6 views
1

Я изменил существующее приложение GestureBuilder, чтобы принять несколько ударов. Чтобы принять буквы A, D, F и так далее. Я создал простое приложение, которое распознает правильность буквы или нет. Моя проблема:Android многотактный жест не работает

1. Я успешно записал многоструйную букву в файле с жестом gestureBuilder. 2.Мое приложение не принимает многоструйный жест. Но я установил fadeoffset на 1000 и gesturestroketype как multiple.I не знаю, почему это происходит. Момент, который я вводил следующий xtroke, чтобы написать капитал. Мой предыдущий удар исчез. Я не могу пишите многократные штриховые буквы/символы.

Код:

XML файл:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 

    > 

     <android.gesture.GestureOverlayView 
     android:id="@+id/gestures_overlay" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1.0" 
     android:fadeOffset="5000" 
     android:eventsInterceptionEnabled="true" 

     android:gestureStrokeType="multiple" /> 



     </LinearLayout> 

Java файл:

package com.example.gesture_letter; 

     import java.util.ArrayList; 

      import android.os.Bundle; 
     import android.app.Activity; 
import android.gesture.Gesture; 
import android.gesture.GestureLibraries; 
import android.gesture.GestureLibrary; 
import android.gesture.GestureOverlayView; 
import android.gesture.GestureOverlayView.OnGestureListener; 
import android.gesture.GestureOverlayView.OnGesturePerformedListener; 
import android.gesture.Prediction; 
import android.graphics.Color; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnGesturePerformedListener { 
    GestureLibrary mLibrary; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     GestureOverlayView gestureoverlayview=new GestureOverlayView(this); 

     View inflate=getLayoutInflater().inflate(R.layout.activity_main,null); 
     gestureoverlayview.setGestureColor(Color.rgb(0, 255, 0)); 
     gestureoverlayview.setGestureVisible(true); 
     gestureoverlayview.setUncertainGestureColor(Color.rgb(0,0,255)); 

     gestureoverlayview.addView(inflate); 
     gestureoverlayview.addOnGesturePerformedListener(this); 
     mLibrary=GestureLibraries.fromRawResource(this,R.raw.gestures); 
     if(!mLibrary.load()) 
     { 
      Log.i("debug","FAILED"); 

     } 
     else 
     { 
      Log.i("debug","LOADED"); 
     } 

     Log.i("debug","OnCreate"); 
     setContentView(gestureoverlayview); 


    } 

    @Override 
    public void onGesturePerformed(GestureOverlayView arg0, Gesture arg1) { 
     // TODO Auto-generated method stub 

     ArrayList<Prediction> predictions=mLibrary.recognize(arg1); 
     if(predictions.size()>0) 
     { 
      Prediction prediction=predictions.get(0); 
      if(prediction.score>1.0) 
      { 
       String s=prediction.name; 


       Toast.makeText(getApplicationContext(), s,Toast.LENGTH_LONG).show(); 
      } 
      else 
       if(prediction.score<1.0) 
       { 
        Toast.makeText(getApplicationContext(), "None",Toast.LENGTH_LONG).show(); 
       } 
       } 

     } 
    } 

Спасибо.

Я также хотел бы хороший ресурс для применения жеста building.thank вы

ответ

2

Я не знаю, почему, android:GestureStrokeType="multiple" не работает. Мне показалось, что я попробую его со стороны джава. Я установил:

gestureoverlayview.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE); 
gestureoverlayview is an object of GestureOverlayView(you can name it anything) 

main_activity.java файл для новичков) Тогда вы увидите, что она работает.

Я думаю, что его ошибка, я не sure.I провел недели висения на этом :(

+1

Кроме того, кто смотрит на это, я должен был добавить 'fadeOffset = "3600000"' к XML. Это не должно быть час (3600000), но что-то большое дать вам время между штрихами. – Lee

0

Проблема заключается в том, что вы создаете новый GestureOverlayView:

GestureOverlayView gestureoverlayview = новый GestureOverlayView (это) ;

Вы должны вызвать представление, определенное в XML с findViewById (R.id.gesture_overlay);

Смежные вопросы