对于一个存有Gesture对象的GestureLibrary对象来说, 应该如何保存GestureLibrary对象呢?
static GestureLibrary fromFile(String path) 这个方法构造了GestureLibrary对象,是不是还需要load一下,才能用recognize等方法呢?
static GestureLibrary fromFile(String path) 这个方法构造了GestureLibrary对象,是不是还需要load一下,才能用recognize等方法呢?
解决方案 »
- 关于阿里基站定位、WIFI定位坐标问题
- 关于android应用的问题
- web page not available
- 关于gps的疑问,欢迎大家来聊聊
- android 版本2.2 到1.5的转换
- 求助JNI的数组赋值问题【来者有分】
- GestureImageView結合Viewpager問題
- android app混淆错误
- 执行AlertDialog.Builder.show()时,不等待用户点击“确定”吗?
- ScrollView和VerticalViewPager的滑动冲突
- Android绘制图表 Charts4j的问题!
- 如何记录查询哪个引用发出ACTION_PACKAGE_ADDED这个广播
应该是:对于一个存有Gesture对象的GestureLibrary对象来说, 应该如何保存GestureLibrary对象呢?
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) {
}
}
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.save()的返回值是true。怎么回事,麻烦帮我看下代码?
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
}
}
}
File path = new File(Environment.getExternalStorageDirectory(),"my_gesture");
glibrary = GestureLibraries.fromFile(path);
glibrary.load();//这里要加载一次才可以
ArrayList<Gesture> gs = glibrary.getGestures(gesturename);
我还想问一个问题。
就是如何列举手机系统上安装的所有程序的图标,然后根据用户选择的图标,获得相对应的启动信息,再用startActivity启动呢?
http://mm.10086.cn/buluo/topic.php?tid=867