Android жест обнаружения и распознавания - PullRequest
2 голосов
/ 14 января 2012

Я пытаюсь добавить обнаружение "броска" в исходный код простого распознавания жестов, который есть у разработчика ( на этом сайте ).и это код:

public class GestureMix extends Activity implements OnGesturePerformedListener{
/** Called when the activity is first created. */
private GestureLibrary mLibrary;
private static final int LARGE_MOVE= 60;
private static final String TAG= "Debug";
private GestureDetector gestureDetector;

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

    tv= (TextView)findViewById(R.id.textView1);

    gestureDetector= new GestureDetector(this, new SimpleOnGestureListener(){

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
            if(e1.getY()- e2.getY() > LARGE_MOVE){
                tv.setText("\nFling Ke Atas dengan kecepatan" +velocityY);
                //tv.append("\nFling Ke Atas dengan kecepatan" +velocityY);
                Log.d(TAG, "\nFling Ke Atas dengan kecepatan" +velocityY);
                return true;
            } else if(e2.getY()-e1.getY() > LARGE_MOVE){
                tv.setText("\nFling Ke Bawah dengan kecepatan" +velocityY);
                //tv.append("\nFling Ke Bawah dengan kecepatan" +velocityY);
                Log.d(TAG,"\nFling Ke Bawah dengan kecepatan" +velocityY );
                return true;
            } else if(e1.getX()-e2.getX() > LARGE_MOVE){
                tv.setText("\nFling Ke Kiri dengan kecepatan" +velocityX);
                //tv.append("\nFling Ke Kiri dengan kecepatan" +velocityX);
                Log.d(TAG, "\nFling Ke Kiri dengan kecepatan" +velocityX);
                return true;
            } else if(e2.getX()-e1.getX() > LARGE_MOVE){
                tv.setText("\nFling Ke Kanan dengan kecepatan" +velocityX);
                //tv.append("\nFling Ke Kanan dengan kecepatan" +velocityX);
                Log.d(TAG,"\nFling Ke Kanan dengan kecepatan" +velocityX );
                return true;
            }
            return false;
        }
    });

    Log.d(TAG, "d on create");

     mLibrary= GestureLibraries.fromRawResource(this, R.raw.gestures);
    if(!mLibrary.load()){
        finish();
    }

    GestureOverlayView gst= (GestureOverlayView) findViewById(R.id.gesture);
    gst.addOnGesturePerformedListener(this);


}

@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    // TODO Auto-generated method stub
    Log.d(TAG, "d gesture perform");
    ArrayList<Prediction> predictions= mLibrary.recognize(gesture);

    if(predictions.size()>0){
        Prediction prediction= predictions.get(0);

        if(prediction.score >1.0){
            Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
            Log.d(TAG, prediction.name);
        }
    }   
}

@Override
public boolean onTouchEvent(MotionEvent event){
    Log.d(TAG, "d on touch");
    return gestureDetector.onTouchEvent(event);
}

}

Распознавание жестов прошло успешно (это означает правильный результат), но обнаружение жестов (включение) не покажет результат (ононе будет отображаться ни в текстовом представлении, ни в logCat. Кажется, детектор жестов не будет работать на gestoverlayview .

Как я могу исправить этот код, чтобы я мог видеть жестПризнание и скорость броска в результате?

Любой совет будет принята с благодарностью. Пожалуйста, попросите разъяснений, и я с удовольствием расскажу вам подробности того, что я пробовал.

Прошу прощения за плохое знание английского языка и меньшие знания в области программирования. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...