/ android  手势识别 

AndroidStudio:手势识别


一内容:设计一个手写字体识别程序。

二实现

①建立一个存放手写字体的数据库

②activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Gesture:"
        android:id="@+id/tv"
        android:textSize="24dp"/>
 
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:text="clear"
        android:id="@+id/bt"/>
 
    <android.gesture.GestureOverlayView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gestureStrokeType="multiple"
        android:eventsInterceptionEnabled="false"
        android:orientation="vertical"
        android:id="@+id/gesture"></android.gesture.GestureOverlayView>
</LinearLayout>

3.MainActivity.java

package com.example.myapplication;
 
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
import java.util.ArrayList;
 
public class MainActivity extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener {
    GestureLibrary mLibrary;  //定义手势库对象
    GestureOverlayView gest;  //定义手势视图对象做画板之用
    TextView txt;
    Button bt;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        gest = (GestureOverlayView)findViewById(R.id.gesture);
        gest.addOnGesturePerformedListener(this);  // 注册手势识别的监听器
        txt = (TextView)findViewById(R.id.tv);
        mLibrary = GestureLibraries.fromRawResource(this,R.raw.gestures);  //加载手势库
        bt = (Button)findViewById(R.id.bt);
        bt.setOnClickListener(new Click());
 
        if (!mLibrary.load()) {
            finish();
        }
    }
        /*根据画的手势识别是否匹配手势库里的手势*/
    @Override
    public void onGesturePerformed(GestureOverlayView gest, Gesture gesture) {
        ArrayList gestList = mLibrary.recognize(gesture);  // 从手势库获取手势数据
        if (gestList.size() > 0) {
            Prediction pred = (Prediction)gestList.get(0);
           if (pred.score > 1.0) {    // 检索到匹配的手势
               Toast.makeText(this,pred.name,Toast.LENGTH_SHORT).show();
               txt.append(pred.name);
           }
        }
    }
 
    private class Click implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            txt.setText("Gesture:");
        }
    }
}

三效果

20190407210651129.jpg

发布评论

热门评论区: