尝试保存手势时哪种方法更好或可行?

时间:2013-08-14 07:54:58

标签: android storage gesture

目前,我正在制作涉及使用GestureOverlayView的应用程序。我已经使用GestureBuilder创建了一些默认手势,并将它们复制到我的应用程序中的res/raw文件夹中。我的应用程序也进行自定义,这意味着用户可以创建自己的手势并保存。我已经读过,我不可能将额外制作的手势从用户保存到res/raw文件夹。我被告知我有一些可选项:ExternalStorage(到SD卡),InternalStorageSharedPreferences。哪种方法可能是更优选的选择?

这是我到目前为止所做的:

package com.epicunlock.rx24race;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;

import android.app.Activity;
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.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;

//Default gestures: s, d, b, c
public class createShortcut extends Activity implements OnGesturePerformedListener {

EditText scName;
private GestureLibrary gestureLib;
FileOutputStream fos;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.createshortcutlayout);
    scName = (EditText)findViewById(R.id.etName);
    GestureOverlayView gestures = (GestureOverlayView)findViewById(R.id.gestures);
    gestures.addOnGesturePerformedListener(this);
    gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures);
    if (!gestureLib.load()) {
        finish();
    }
}

@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    // TODO Auto-generated method stub
    ArrayList<Prediction> predictions = gestureLib.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();
        } else {
            gestureLib.addGesture(scName.getText().toString(), gesture);
            gestureLib.save();
            setResult(RESULT_OK);
        }
    }
}

}

更新:我当前的代码保存了手势,但是当我退出应用程序时它们未被保存

1 个答案:

答案 0 :(得分:0)

sdk示例中有一个手势生成器示例。样本/机器人-17 / GestureBuilder。

此示例显示如何创建,保存等手势。

对于样本中问题的简短回答,他们使用addgesture()和save()方法将手势保存到手势库。