80,362
社区成员
发帖
与我相关
我的任务
分享
File path = new File(Environment.getExternalStorageDirectory(),"my_gesture");
glibrary = GestureLibraries.fromFile(path);
glibrary.load();//这里要加载一次才可以
ArrayList<Gesture> gs = glibrary.getGestures(gesturename);
public class GestureTest extends Activity {
/** Called when the activity is first created. */
private Gesture currentgesture;
private GestureOverlayView gov;
private MyListener listener;
private GestureLibrary glibrary;
private String gesturename;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gesturename = new String("gesture");
listener = new MyListener();
gov = (GestureOverlayView) findViewById(R.id.gestures_overlay);
gov.addOnGestureListener(listener);
File path = new File(Environment.getExternalStorageDirectory(),"my_gesture");
glibrary = GestureLibraries.fromFile(path);
ArrayList<Gesture> gs = glibrary.getGestures(gesturename);
if(gs ==null)
Log.v("gesture is null" , "null");
else
Log.v("gesture num is " , ""+gs.size());
}
public void addGesture(View view)
{
if(currentgesture != null)
{
glibrary.addGesture(gesturename, currentgesture);
gov.clear(true);
}
Log.v("add gesture" , "add gesture");
}
public void cancel(View view)
{
if(glibrary.save())
Log.v("save success","save success");
ArrayList<Gesture> gs = glibrary.getGestures(gesturename);
Log.v("save time" ," "+gs.size());
Log.v("cancel " , "cancel and save");
}
private class MyListener implements GestureOverlayView.OnGestureListener
{
@Override
public void onGestureStarted(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
}
@Override
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
currentgesture = overlay.getGesture();
Log.v("gesture ended" , "gesture ended");
}
@Override
public void onGestureCancelled(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
}
}
}
private static class FileGestureLibrary extends GestureLibrary {
private final File mPath;
public FileGestureLibrary(File path) {
mPath = path;
}
@Override
public boolean isReadOnly() {
return !mPath.canWrite();
}
public boolean save() {
if (!mStore.hasChanged()) return true;
final File file = mPath;
final File parentFile = file.getParentFile();
if (!parentFile.exists()) {
if (!parentFile.mkdirs()) {
return false;
}
}
boolean result = false;
try {
//noinspection ResultOfMethodCallIgnored
file.createNewFile();
mStore.save(new FileOutputStream(file), true);
result = true;
} catch (FileNotFoundException e) {
Log.d(LOG_TAG, "Could not save the gesture library in " + mPath, e);
} catch (IOException e) {
Log.d(LOG_TAG, "Could not save the gesture library in " + mPath, e);
}
return result;
}
public boolean load() {
boolean result = false;
final File file = mPath;
if (file.exists() && file.canRead()) {
try {
mStore.load(new FileInputStream(file), true);
result = true;
} catch (FileNotFoundException e) {
Log.d(LOG_TAG, "Could not load the gesture library from " + mPath, e);
} catch (IOException e) {
Log.d(LOG_TAG, "Could not load the gesture library from " + mPath, e);
}
}
return result;
}
}
GestureLibrary sStore = GestureLibraries.fromFile(“/sdcard/gesture”); //加载原来某个文件
sStore.load()
sStore.addGesture("xxxxx", mGesture); //增加一个Gesture对象
sStore.save(); //这里保存
GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);
overlay.addOnGestureListener(new GesturesProcessor());
private class GesturesProcessor implements GestureOverlayView.OnGestureListener {
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
mGesture = null;
}
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
}
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
mGesture = overlay.getGesture(); //手势完后这里获取
if (mGesture.getLength() < LENGTH_THRESHOLD) {
overlay.clear(false);
}
}
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
}
}