GestureLibrary识别用户手势

package com.example.gesturetest5;
/*注释 :此demo是接着上一个增加手势进行的,将用户绘制的手势与上一个增加保存后的手势金兴比较,帅选符合标准的手势
 * 概念:GestureLibrary对象 专门提供一个recognize(Gesture gesture)方法来识别手势,其中此方法返回ArrayList装载
  Predictions的一个数组,其中score代表了手势的相似度。
 * 这节没主要知识点,见下文代码注释。
 * 
 * 
 * 
 */
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
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.graphics.Color;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
//创建手势编辑器
    GestureOverlayView gestureView;
    //记录手机上已有的手势库
    GestureLibrary gestureLibrary;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取上一个demo的文件手势库
gestureLibrary=GestureLibraries.fromFile("/mnt/sdcard/mygestures");
//获取手势编辑组件,记录用户绘制的手势
gestureView=(GestureOverlayView)findViewById(R.id.gesture);
gestureView.setGestureColor(Color.RED);
//设置手势的绘制宽度
gestureView.setGestureStrokeWidth(4);
//为gesture的手势完成事件绑定事件监听器---手势绘制完成后下一步,利用Dialog视图将其显示出来
//手势编辑组件完成后绑定时间监听器   
gestureView.addOnGesturePerformedListener(new OnGesturePerformedListener(){


@Override
public void onGesturePerformed(GestureOverlayView arg0, Gesture gesture) {
// TODO Auto-generated method stub
//获取手势库gestureLibrary内与用户绘制的gesture匹配的predictions
ArrayList predictions=gestureLibrary.recognize(gesture);
//创建一个一位数组保存用户手势相近的entryName
ArrayList result=new ArrayList();
for(Prediction pre:predictions){    //简单foreach循环应用
//score代表了手势的相似度,如果匹配的相似度>1.0
if(pre.score>1.0){     
//
result.add("与手势【"+pre.name+"】相似度为"+pre.score);
}
}
//如果获取到手势匹配>2.0
if(result.size()>0){
//创建一个adapter
ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_dropdown_item_1line,result.toArray());
//利用对话框将adapter显示出来
new AlertDialog.Builder(MainActivity.this).setAdapter(adapter,null).setPositiveButton("确定",null).show();
}else{
Toast.makeText(MainActivity.this, "无法找到匹配的手势", Toast.LENGTH_SHORT).show();
}
}
});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

你可能感兴趣的:(疯狂android基础)