android手势识别

    一 手势文件的生成   即建立手势库  

    在使用手势识别的项目中,很多都用到了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 项目


android手势识别
 
                 3. 选中 GestureBuilder 项目的 graphics、res、src 文件夹 和 AndroidManifest.xml 文件,复

制它们
              4. 再进入到我们自己新建的 GestureBuilder 下,删掉自己的 graphics、res、src 文件夹 和

AndroidManifest.xml 文件再将复制的内容粘贴到文件夹下。                

              5. 然后再将项目部属到模拟器上。运行项目,出现一个添加手势库的程序。
             
android手势识别
 

              6. 点击 "Add gesture",就可以添加一个手势。
                 在屏幕上画出一个图形,再在屏幕上方为这个图形输入一个名字。就完成了一个手势的添加。


android手势识别
 
              7. 点击 "Done" 按钮可以保存这个手势到手势库文件
              8. 所有添加的手势都被保存到了 SD 卡根目录下的 gestures 手势库文件中。

              9.之后,我们使用项目ddms,把这个文件导出。


android手势识别
 然后,当我项目用到手势时,只需要把这个文件当成资源引入,就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”