Android Gesture 手势识别使用实例

关键字: android,gesture,手势识别
很高兴能在Android1.6的sdk看到手势识别这一功能,之前一直在想,如何在android中实现nds游戏那样用手势(准确点应该是笔势)来控制游戏角色?现在总算看到一点曙光了,不过手势要做到笔势那样随心所欲地控制游戏人物,还有很多细节问题需要处理。
在Android1.6的模拟器里面预装了一个叫Gestures Builder的程序,这个程序就是让你创建自己的手势的(Gestures Builder的源代码在sdk问samples里面有,有兴趣可以看看)。创建的手势将被保存到/sdcard/gestures里面,把这个文件复制到你的工程/res/raw下,你就可以在你的工程里面使用这些手势了。复制到/res/raw下的手势是只读的,也就是说你不能修改或增加手势了,如果想实现增改的话,可以直接加载sd卡里面的gestures文件。
在例子中,我创建了这样的手势:


第二步:在layout里面创建GestureOverlayView,这个透明的view就是让你在上面画手势用的,可以叠在其他View上面:

Xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<android.gesture.GestureOverlayView
android:id="@+id/gestures"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
/>
</LinearLayout>

第三步:载入Gesture:

Java代码
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!mLibrary.load()) {
finish();
}

第四步:增加响应函数OnGesturePerformedListener:

Java代码
GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);

以上四步就可以实现简单的Gesture识别原型了:
程序运行结果如下,书写一个a字,程序识别出,然后toast一个a出来:

完整代码如下:
Java代码
package com.ray.test;

import java.util.ArrayList;

import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.os.Bundle;
import android.widget.Toast;

public class TestGesture extends Activity implements OnGesturePerformedListener{

GestureLibrary mLibrary;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);
mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!mLibrary.load()) {
finish();
}
}

@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList predictions = mLibrary.recognize(gesture);

// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = (Prediction) predictions.get(0);
// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
}
}

}
}

更多相关文章

  1. Android手势ImageView之(自定义GestureDetector)
  2. Android(安卓)studio简单使用JNI实例
  3. Android(安卓)TextView设置自动识别的超链接字体颜色,及自身点击
  4. [原创] 如何在android中实现swipe的手势功能及页面拖动动画
  5. 基于Android的传感器和语音识别的设计与实现
  6. 获取Android短信草稿箱号码为空的解决办法
  7. Android(安卓)4.4 meminfo 实现分析
  8. 【Google Voice】Android(安卓)轻松实现语音识别
  9. Android(安卓)将被依赖的库项目打包成aar(非jar)文件

随机推荐

  1. Android 引入Airbnb Lottie框架后,报错Err
  2. Android请求web的方式
  3. Android 通过命令行启动Activity
  4. Android实现手机拍照功能
  5. Android学习【7】manifest文件讲解
  6. android 随手记 广播通知栏 二
  7. Android实现淘宝商品列表切换效果
  8. Android:java.lang.IllegalStateExceptio
  9. android的Activity管理
  10. 解决:Failed to fectch URl https://dl-ss