package com.example.android.recipe039;
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.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class Recipe039 extends Activity
implements OnGesturePerformedListener {
private GestureLibrary mLibrary;
private GestureOverlayView mGesture;
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Gestures Builderで作ったジェスチャー情報をロード
mLibrary = GestureLibraries.fromRawResource(this,
R.raw.gestures);
if (!mLibrary.load()) {
finish();
}
// GestureOverlayViewにリスナーをセット
mGesture = (GestureOverlayView)findViewById(R.id.gestures);
mGesture.addOnGesturePerformedListener(this);
// ジェスチャー受け付けを無効にしておく
mGesture.setEnabled(false);
mWebView = (WebView)findViewById(R.id.web_view);
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.google.com/");
}
// ボタンが押されたら呼び出される
public void onStartButton(View view) {
// ジェスチャー受け付けを有効にする
mGesture.setEnabled(true);
}
public void onGesturePerformed(GestureOverlayView overlay,
Gesture gesture) {
// 解析します
ArrayList<Prediction> predictions;
predictions = mLibrary.recognize(gesture);
// 結果が1つ以上あったら
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// スコアが1.0以上
// (これはアプリの特性に応じて調整してください)
if (prediction.score > 1.0) {
// ジェスチャーの名前をトーストでチン
Toast.makeText(this, prediction.name,
Toast.LENGTH_SHORT).show();
if ("back".equals(prediction.name)) {
// 戻れるか判定して
if(mWebView.canGoBack()) {
// 戻る!
mWebView.goBack();
}
}
}
}
// ジェスチャー受け付けを無効にする
overlay.setEnabled(false);
}
}