Android开发之手势识别

本节将介绍Android中非常炫酷的功能:手势识别

首先,我们将用SDK自带的项目建立一个手势库,这个开源项目可以在samples中的文件夹中找到,名为“GestureBuilder”,将其导入Eclipse中,然后运行在虚拟的手机上如下图

 Android开发之手势识别

图 1


Android开发之手势识别
图 2

添加一个名称为call的手势,之后就可以关闭这个应用了,然后在虚拟手机的虚拟SD卡根目录下就可以找到一个名为”gestures”的文件,这个便是刚才建立的手势库文件了,下面将围绕这个手势库进行应用的开发,以拨打电话为例,比如用户只要在屏幕上做出与该手势相近的手势,便可以拨打指定号码

 

Android开发之手势识别
图 3 

界面其实很简单,主体是一个可以画手势的控件

<android.gesture.GestureOverlayView

        android:id="@+id/gesture"

        android:layout_width="match_parent"

        android:layout_height="0dip"

        android:layout_weight="1.0"

        android:gestureStrokeType="multiple" />//表示可以多次画手势

在主Activity创建的时候,加载手势库

File gestureFile = new File(Environment.getExternalStorageDirectory(),"gestures");//创建手势库文件

        //找到手势库

        library = GestureLibraries.fromFile(gestureFile.getAbsolutePath());

        //加载手势库

        success = library.load();

//给手势控件加载监听对象

        gestureOverlayView.addOnGesturePerformedListener(new GestureListener());

监听对象是自己创建的,继承自OnGesturePerformedListener

 

private final class GestureListener implements OnGesturePerformedListener{

 

                   @Override

                   public void onGesturePerformed(GestureOverlayView overlay,

                                     Gesture gesture) {

                            if(!success)return;//如果手势库还没创建,什么也不做

                            ArrayList<Prediction> predictions = library.recognize(gesture);//从手势库中找到与用户手势匹配的集合

                            if(predictions.size()>0){//如果有匹配的手势集合

                                     Prediction prediction= predictions.get(0);

                                     Log.i("MainActivity", "" + prediction.score);

                                     if(prediction.score>3){//匹配程度从110

                                               if(prediction.name.equals("s")){

                                         Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:5556"));

                                               startActivity(intent);

                                               }else if(prediction.name.equals("q")){

                                                        android.os.Process.killProcess(android.os.Process.myPid());//杀死当前进程

                                               }

                                     }

                            }

                   }

            

}

至此,Android手机的手势识别功能介绍完毕。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值