package net.npaka.GestureLibEx;
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.Prediction;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
//ジェスチャーの利用
public class GestureLibEx extends Activity implements
GestureOverlayView.OnGestureListener,
GestureOverlayView.OnGesturePerformedListener,
GestureOverlayView.OnGesturingListener {
private GestureLibrary gestureLib;
//アプリの初期化
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトの生成
LinearLayout layout=new LinearLayout(this);
layout.setBackgroundColor(Color.rgb(255,255,255));
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
//ジェスチャーライブラリの生成
gestureLib=GestureLibraries.fromPrivateFile(this,"gestures");
//ジェスチャービューの生成
GestureOverlayView view=new GestureOverlayView(this);
view.setGestureStrokeType(
GestureOverlayView.GESTURE_STROKE_TYPE_SINGLE);
view.addOnGestureListener(this);
view.addOnGesturePerformedListener(this);
view.addOnGesturingListener(this);
setLLParams(view);
layout.addView(view);
}
//ジェスチャー開始時に呼ばれる
public void onGestureStarted(GestureOverlayView overlay,MotionEvent event) {
android.util.Log.v("","onGestureStarted");
}
//ジェスチャー中に呼ばれる
public void onGesture(GestureOverlayView overlay,MotionEvent event) {
android.util.Log.v("","onGesture");
}
//ジェスチャーキャンセル時に呼ばれる
public void onGestureCancelled(GestureOverlayView overlay,MotionEvent event) {
android.util.Log.v("","onGestureCancelled");
}
//ジェスチャー終了時に呼ばれる
public void onGestureEnded(GestureOverlayView overlay,MotionEvent event) {
android.util.Log.v("","onGestureEnded");
}
//ジェスチャー認識時に呼ばれる
public void onGesturingStarted(GestureOverlayView overlay) {
android.util.Log.v("","onGesturingStarted");
}
//ジェスチャー認識終了時に呼ばれる
public void onGesturingEnded(GestureOverlayView overlay) {
android.util.Log.v("","onGesturingEnded");
}
//ジェスチャー認識時に呼ばれる
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
//ジェスチャー初回
if (gestureLib.getGestureEntries().size()==0) {
//ジェスチャー保存
gestureLib.addGesture("First",gesture);
gestureLib.save();
Toast.makeText(GestureLibEx.this,"ジェスチャー保存",
Toast.LENGTH_SHORT).show();
}
//ジェスチャー2回目以降
else {
ArrayList predictions=gestureLib.recognize(gesture);
for (int i=0;i<predictions.size();i++) {
Prediction p=predictions.get(i);
Toast.makeText(GestureLibEx.this,
"スコア:"+p.score,Toast.LENGTH_SHORT).show();
}
}
}
//ライナーレイアウトのパラメータ指定
private static void setLLParams(View view) {
view.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
}
}
|