Android 手势识别应用

最近在研究Android的东西,顺便看了一下关于手势存储和识别相关的知识。然后将Android提供的GestureBuilder Sample程序稍微改动了一下,让其可以提供手势识别的功能。也就是说,在这个小程序中,创建手势、识别手势的功能全有了。这些都是新手入门知识,高手请饶过。

下面是一些关键代码,与大家分享一下:

在App类中,从SD文件中加载GestureLibrary

public void onCreate() {
        super.onCreate();
        if(_storeFile == null){
            _storeFile =  new File(this.getExternalFilesDir(null), "gestures");
        }
        if (_gestureLib == null) {
            _gestureLib = GestureLibraries.fromFile(_storeFile);
        }
    }

GestureLibrary 是Android的手势管理库,可用于手势的读取、存储和识别。

创建和现实手势的方法就不说了,详见GestureBuilder Sample代码。

在GestureRecognizeActivity 类中,首先要放入一个GestureOverlayView让用户可以输入要识别的手势。 然后要给这个view加GestureOverlayView.OnGesturePerformedListener。 这就是关键了,在用户输入完手势后,这个Listener的onGesturePerformed方法会被调用,传入参数中有刚输入的手势。然后将这个手势传入手势库中进行识别就可以了。识别的结果是一个集合,根据match score从大到小排。程序中我以Score > 5作为Match的条件,最终效果比较满意。

_overlay = (GestureOverlayView) findViewById(R.id.gestures_recognize_overlay);
_overlay.addOnGesturePerformedListener(new GesturePerformedProcesser());

 

GesturePerformedProcesser 类代码:

private class GesturePerformedProcesser implements GestureOverlayView.OnGesturePerformedListener{

        @Override
        public void onGesturePerformed(GestureOverlayView overlay,
                Gesture gesture) {
            ArrayList<Prediction> predictions =  _gestureLib.recognize(gesture);
            if(!predictions.isEmpty()){
                Prediction prediction = predictions.get(0);
                if(prediction.score > 5){
                    Toast.makeText(overlay.getContext(), getString(R.string.gesture_recognized, prediction.name), Toast.LENGTH_SHORT).show();
                    return;
                }
            }
            Toast.makeText(overlay.getContext(), getString(R.string.gesture_unrecognized), Toast.LENGTH_SHORT).show();
        }
    }

请点击链接下载代码 http://ishare.iask.sina.com.cn/f/36942121.html

转载于:https://www.cnblogs.com/havefun/archive/2013/05/05/3061074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值