鱼C论坛

 找回密码
 立即注册
查看: 2258|回复: 6

[原创]android学习之手势识别功能

[复制链接]
发表于 2014-11-19 20:26:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.在布局文件里面添加手势识别控件:
<android.gesture.GestureOverlayView
        android:layout_weight="140"
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:gestureStrokeType="multiple" 
        

        />
2.在activity里面添加手势识别的代码,打对勾的是识别成功的,如果成功的话会跳转到另一个程序页面上:
package com.example.gestureoverlayview_test;

import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGestureListener;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

        private GestureOverlayView gv;
        private GestureLibrary gestureLibrary;
        private Gesture gesture;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                
                gv = (GestureOverlayView) this.findViewById(R.id.gv);
                
                //加载手势库
                gestureLibrary = GestureLibraries.fromFile("/mnt/sdcard/gestures");
                gestureLibrary.load();
                //单笔手势
                //gv.addOnGesturePerformedListener(new MyOnGesturePerformedListener());  
                gv.addOnGestureListener(new MyOnGestureListener());   //多笔手势
        }

        public void click(View v)
        {
                gv.clear(true);
                List<Prediction> predictions = gestureLibrary.recognize(gesture);  //将手势放在手势库中进行比较
                if(!predictions.isEmpty())
                {
                        Prediction prediction = predictions.get(0);   //与之最相近的手势
                        if(prediction.score>8 && "close".equals(prediction.name))   //如果对比度大于8并且名字是close的话
                        {
                                finish();  //就关闭本页面
                        }else if(prediction.score > 8 && "open".equals(prediction.name))
                        {
                                Intent intent = new Intent();
                                intent.setClassName("com.example.video", "com.example.video.MainActivity");
                                startActivity(intent);
                        }
                }else
                {
                        Toast.makeText(getApplicationContext(), "没有匹配的手势", Toast.LENGTH_LONG).show();
                }
        }
        
        private class MyOnGestureListener implements OnGestureListener   //多笔手势
        {

                @Override
                public void onGesture(GestureOverlayView arg0, MotionEvent arg1) {
                        // TODO Auto-generated method stub
                        
                }

                @Override
                public void onGestureCancelled(GestureOverlayView arg0, MotionEvent arg1) {
                        // TODO Auto-generated method stub
                        
                }

                @Override
                public void onGestureEnded(GestureOverlayView overlay, MotionEvent arg1) {
                        // TODO Auto-generated method stub
                        gesture = overlay.getGesture();
                }

                @Override
                public void onGestureStarted(GestureOverlayView arg0, MotionEvent arg1) {
                        // TODO Auto-generated method stub
                        
                }
                
        }

        private class MyOnGesturePerformedListener implements OnGesturePerformedListener  //单笔手势
        {

                @Override
                public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
                        // TODO Auto-generated method stub
                        List<Prediction> predictions = gestureLibrary.recognize(gesture);
                        if(!predictions.isEmpty())
                        {
                                Prediction prediction = predictions.get(0);
                                if(prediction.score > 8 && "open".equals(prediction.name))  //如果是open的话,就跳转到另外一个页面
                                {
                                        Intent intent = new Intent();
                                        intent.setClassName("com.example.video", "com.example.video.MainActivity");
                                        startActivity(intent);
                                }
                        }else
                        {
                                Toast.makeText(getApplicationContext(), "没有匹配手势", Toast.LENGTH_LONG).show();
                        }
                }
                
        }
        
        @Override
        protected void onDestroy() {   //最后杀死进程
                // TODO Auto-generated method stub
                android.os.Process.killProcess(android.os.Process.myPid());
                super.onDestroy();
        }
        
        
}
**********点击识别*****************
QQ截图20141119200902.png

*************成功后就会跳转到这个页面*************
QQ截图20141119202507.png


评分

参与人数 1荣誉 +2 鱼币 +3 贡献 +2 收起 理由
拈花小仙 + 2 + 3 + 2 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-19 21:41:27 | 显示全部楼层
青玄太厉害了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-19 22:22:20 | 显示全部楼层

  小仙过奖了! 不知道小仙最近在忙什么!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-19 22:22:20 | 显示全部楼层

  小仙过奖了! 不知道小仙最近在忙什么!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-19 22:39:21 | 显示全部楼层
青玄 发表于 2014-11-19 22:22
小仙过奖了! 不知道小仙最近在忙什么!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 00:51:56 | 显示全部楼层
支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-25 21:23:50 | 显示全部楼层
必须得顶下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 16:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表