/**
* @file GestureOverlayView.java
*
* @revision: none
*
* @version 0.0.01
* @author: Zenki (zhajun), zenki2001cn@163.com
* @date: 2011-6-25 下午05:22:17
*/
package com.easyview.ebook.reader.ui.view;
import java.util.ArrayList;
import com.easyview.ebook.reader.engine.util.Logger;
import com.easyview.ebook.reader.ui.controller.IControlCenterService.COMMAND_TYPE;
import com.easyview.ebook.reader.easyviewer.R;
import android.content.Context;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.util.AttributeSet;
import android.widget.TextView;
import android.widget.Toast;
public class GestureOverlayLayout extends EVBaseRelativeLayout {
static private final String TAG = "GestureOverlayLayout";
private GestureOverlayView mGestureView;
private GestureLibrary mLibrary;
private final String GESTURE_CLOSE = "close";
private final String GESTURE_BOOKMARK = "bookmark";
private final String GESTURE_NEXT_CHAPTER = "nc";
private final String GESTURE_PRVIOUS_CHAPTER = "pc";
private final String GESTURE_FIND = "find";
private final String GESTURE_TOPIC = "topic";
private final String GESTURE_JUMP = "jump";
private final String GESTURE_5 = "5";
private final String GESTURE_6 = "6";
private final String GESTURE_7 = "7";
private final String GESTURE_8 = "8";
private final String GESTURE_9 = "9";
public GestureOverlayLayout(Context context) {
super(context);
}
public GestureOverlayLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GestureOverlayLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onFinishInflate() {
initView();
super.onFinishInflate();
}
private void initView() {
mLibrary = GestureLibraries.fromRawResource(getContext(), R.raw.gestures);
if (!mLibrary.load()) {
Logger.eLog(TAG, "GestureLibraries load error");
return;
} else {
Logger.eLog(TAG, "GestureLibraries load ok");
}
// mGestureView = (GestureOverlayView) findViewById(R.id.id_gestures);
mGestureView.addOnGesturePerformedListener(mGPListener);
}
private boolean doGestureAction(String name) {
boolean res = false;
if (name.equals(GESTURE_FIND)) {
getControlCenter().runCommand(COMMAND_TYPE.CMD_SHOW_SEARCH);
res = true;
} else if (name.equals(GESTURE_CLOSE)) {
getEasyViewer().exit();
res = true;
} else if (name.equals(GESTURE_NEXT_CHAPTER)) {
getEasyViewer().chapterDown();
res = true;
} else if (name.equals(GESTURE_PRVIOUS_CHAPTER)) {
getEasyViewer().chapterUp();
res = true;
} else if (name.equals(GESTURE_BOOKMARK)) {
getControlCenter().runCommand(COMMAND_TYPE.CMD_SHOW_BOOKMARK);
res = true;
} else if (name.equals(GESTURE_TOPIC)) {
getControlCenter().runCommand(COMMAND_TYPE.CMD_SHOW_TOPIC);
res = true;
} else if (name.equals(GESTURE_JUMP)) {
getControlCenter().runCommand(COMMAND_TYPE.CMD_SHOW_JUMP);
res = true;
} else if (name.equals(GESTURE_5)) {
Toast.makeText(getContext(), GESTURE_5, Toast.LENGTH_SHORT).show();
res = true;
} else if (name.equals(GESTURE_6)) {
Toast.makeText(getContext(), GESTURE_6, Toast.LENGTH_SHORT).show();
res = true;
} else if (name.equals(GESTURE_7)) {
Toast.makeText(getContext(), GESTURE_7, Toast.LENGTH_SHORT).show();
res = true;
} else if (name.equals(GESTURE_8)) {
Toast.makeText(getContext(), GESTURE_8, Toast.LENGTH_SHORT).show();
res = true;
} else if (name.equals(GESTURE_9)) {
Toast.makeText(getContext(), GESTURE_9, Toast.LENGTH_SHORT).show();
res = true;
}
return res;
}
private OnGesturePerformedListener mGPListener = new OnGesturePerformedListener() {
@Override
public void onGesturePerformed(GestureOverlayView overlay,
Gesture gesture) {
ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
if (predictions.size() < 0) {
return;
}
for (Prediction prediction : predictions) {
Logger.eLog(TAG, "onGesturePerformed name = " + prediction.name);
if (prediction.score > 1.0) {
doGestureAction(prediction.name);
break;
}
}
}
};
}