一 手势文件的生成 即建立手势库
在使用手势识别的项目中,很多都用到了gestures这个文件,使用户的操作和此文件比对来进行操作。
在这里,我们使用SDK自带例子GestureBuilder建立手势库,如我项目是2.2的,那么我是用的是(位置:android-sdk-windows\samples\android-8\GestureBuilder)。 此时,就可以使用GestureBuilder建立手势库,生成的手势库文件在SCDard上,默认文件名称为:gestures
具体步骤:
1. 新建一个 Android 项目,项目名称为 GestureBuilder
2. 进入到 android-sdk-windows\samples\进入到对应的版本 SDK 目录,因为我使用的是 Android2.2。于是再进入到 android-8 目录下,打开 GestureBuilder 项目
3. 选中 GestureBuilder 项目的 graphics、res、src 文件夹 和 AndroidManifest.xml 文件,复
制它们
4. 再进入到我们自己新建的 GestureBuilder 下,删掉自己的 graphics、res、src 文件夹 和
AndroidManifest.xml 文件再将复制的内容粘贴到文件夹下。
5. 然后再将项目部属到模拟器上。运行项目,出现一个添加手势库的程序。
6. 点击 "Add gesture",就可以添加一个手势。
在屏幕上画出一个图形,再在屏幕上方为这个图形输入一个名字。就完成了一个手势的添加。
7. 点击 "Done" 按钮可以保存这个手势到手势库文件
8. 所有添加的手势都被保存到了 SD 卡根目录下的 gestures 手势库文件中。
9.之后,我们使用项目ddms,把这个文件导出。
然后,当我项目用到手势时,只需要把这个文件当成资源引入,就ok。是不是很简单呢?嘿嘿
二 在项目中加载文件,识别手势
a.把手势库文件gestures文件拷贝到项目的res/raw目录下。然后在布局文件中添加用于手势绘制的View:
<android.gesture.GestureOverlayView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gestures" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gestureStrokeType="multiple" android:eventsInterceptionEnabled="false" android:orientation="vertical"/>
b.得到手势库:
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
c. 加载手势库:
mLibrary.load();
List<Prediction> predictions = mLibrary.recognize(gesture);//从手势库中查询匹配的内容,匹配 的结果可能包括多个相似的内容,匹配度高的结果放在最前面.prediction.score 是相似度,是一个大于0、小于10的双精度数值,1就是10%相似,3就是30%相似度
大多数情况下,手势都是通过一笔完成。然而有一些特别的需求就需要通过多个笔画来实现,这时可以使用
gestureStrokeType属性进行设置:android:gestureStrokeType=”multiple”