開発者が持っている簡単なジェスチャ認識ソース コード (このサイト)に「フリング」ジェスチャ検出を追加しようとしています。これはコードです:
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);
}
}
ジェスチャ認識はうまくいきました (正しい結果をトーストします)、ジェスチャ検出 (onfling) は結果を表示しません (textview にも logCat にも表示されません。ジェスチャ検出器が機能しないようです)ジェスチャオーバーレイビューで。
このコードをどのように修正すれば、結果としてジェスチャー認識とフリングの速度を確認できますか?
アドバイスをいただければ幸いです。説明を求めてください。私が試したことの詳細を喜んでお伝えします。
英語が下手で、プログラミングの知識が少なくてすみません。ありがとう。