• 手势识别(GestureOverlayView)


    package org.hjw.addgestest;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.gesture.Gesture;
    import android.gesture.GestureLibraries;
    import android.gesture.GestureLibrary;
    import android.gesture.GestureOverlayView;
    import android.gesture.GestureOverlayView.OnGesturePerformedListener;
    import android.graphics.Bitmap;
    import android.graphics.Color;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
        EditText edit;
        GestureOverlayView gestureView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            edit = (EditText) findViewById(R.id.gesture_name);
            gestureView = (GestureOverlayView) findViewById(R.id.gesture);// 手势编辑图
    
            gestureView.setGestureColor(Color.RED);// 手势颜色
            gestureView.setGestureStrokeWidth(4);// 手势宽度
    
            gestureView
                    .addOnGesturePerformedListener(new OnGesturePerformedListener() {
    
                        @Override
                        public void onGesturePerformed(GestureOverlayView overlay,
                                final Gesture gesture) {
                            View saveDialog = getLayoutInflater().inflate(
                                    R.layout.save, null);
                            ImageView imageView = (ImageView) saveDialog
                                    .findViewById(R.id.show);
                            final EditText gestureName = (EditText) findViewById(R.id.gesture_name);
                            Bitmap bitmap = gesture.toBitmap(128, 128, 10,
                                    0xffff0000);
                            imageView.setImageBitmap(bitmap);
                            new AlertDialog.Builder(MainActivity.this)
                                    .setView(saveDialog)
                                    .setPositiveButton("保存 ",
                                            new OnClickListener() {
    
                                                @Override
                                                public void onClick(
                                                        DialogInterface dialog,
                                                        int which) {
                                                    GestureLibrary gestureLib = GestureLibraries
                                                            .fromFile("/storage/sdcard0/mygestures");
                                                    // 获取手势库
                                                    gestureLib.addGesture(
                                                            gestureName.getText()
                                                                    .toString(),
                                                            gesture);
                                                    // 添加手势
                                                    gestureLib.save();
                                                    // 保存手势库
                                                }
                                            }).setNegativeButton("取消", null).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;
        }
    
    }

    ps.1.GestureLibray为手势库,从GestureLibraries加载手势库文件。

         2.GestureLibrary里的addGesture方法负责添加一个新手势,使用后还要保存。

      3.GestureLibrary里的recognize方法负责识别已输入的手势,返回一个类型为Prediction的ArrayList,比较Prediction里的score属性,大于2,基本相似,name属性为手势名。

  • 相关阅读:
    《人月神话》-读后感2
    自主开发(二)
    自主开发(一)
    《人月神话》-读后感1
    公文流转系统—登录界面
    文件与流课堂实践
    Intern Day22
    Intern Day22
    Intern Day21
    计蒜客T1746
  • 原文地址:https://www.cnblogs.com/dennisac/p/3182626.html
Copyright © 2020-2023  润新知