手势识别在安卓开发里虽然用到的场景不是很多,但有时候还是能让你的产品更方便,更有趣味。比如登陆时不用每次重复输入密码,只需九宫格手势解锁,就像支付宝客户端那样。下面我们完成一个简单的手势识别开发。
我们首先需要一个描述手势动作的文件,在模拟器里预装一个叫GesturesBuilder的程序,这个程序就是让你创建自己的手势的(GesturesBuilder的源代码在sdk问samples里面有,有兴趣可以看看)。创建的手势将被保存到/sdcard/gestures里面。
建立好自己的手势库后,我们就可以实现手势识别了,新建一个工程,把上面的手势库文件复制到你的工程/res/raw下,你就可以在你的工程里面使用这些手势了。复制到/res/raw下的手势是只读的,也就是说你不能修改或增加手势了。
布局xml文件大概如下:
<android.gesture.GestureOverlayView
android:id="@+id/gestures"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gestureStrokeType="multiple"
/>
<Button
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/recognize"
android:onClick="find"
/>
MainActivity里主要代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
library = GestureLibraries.fromRawResource(this, R.raw.gestures);
library.load();
overlayView = (GestureOverlayView) this.findViewById(R.id.gestures);
//只针对单笔手势:overlayView.addOnGesturePerformedListener(new GesturePerformedListener());
overlayView.addOnGestureListener(new GestureListener());
}
public void find(View v){
recognize(mgesture);
overlayView.clear(true);
}
private final class GestureListener implements OnGestureListener{
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
}
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
}
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
mgesture = overlay.getGesture();
}
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
}
}
private final class GesturePerformedListener implements OnGesturePerformedListener{
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
recognize(gesture);
}
}
private void recognize(Gesture gesture) {
ArrayList<Prediction> predictions = library.recognize(gesture);
if(!predictions.isEmpty()){
Prediction prediction = predictions.get(0);
//6表示60%相似
if(prediction.score >= 6){
//call和close是我们在建立手势库时给手势取得名字
if("call".equals(prediction.name)){
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:1350505050"));
startActivity(intent);
}else if("close".equals(prediction.name)){
finish();//关闭Activity
}
}else{
Toast.makeText(getApplicationContext(), R.string.low, 1).show();
}
}else{
Toast.makeText(getApplicationContext(), R.string.notfind, 1).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
android.os.Process.killProcess(android.os.Process.myPid());//关闭应用
}
大家看得出来,我这里定义了两个手势动作,当手势形如手势库中call时,就拨打电话,当手势形如手势库中close时,就退出程序。ok,手势识别开发就这么简单,我们可以再这基础之上做一些复杂的,比如实现手势解锁。思想很简单,我们可以修改下GesturesBuilder的源代码放入自己的工程,用户自己定义好手势动作后将其保存在手势库中,这样用户就可以用手势验证了。
分享到:
相关推荐
在Android开发中,手势识别是一项重要的技术,它允许用户通过触摸屏幕的各种动作来与应用程序进行交互,提升用户体验。本文将基于“android手势识别讲解源码”这个主题,深入解析手势识别的基本原理,以及如何在实际...
在Android开发中,手势识别是提升用户体验的重要一环。Android手势库识别主要涉及的是如何让应用能够理解并响应用户的触摸动作,从而实现更直观、更便捷的交互方式。本教程适用于初学者,将深入探讨如何在Android...
在Android开发中,手势识别是增强用户交互体验的重要一环。手势识别允许用户通过触摸屏上的特定动作来触发相应的功能,比如滑动、点击、双击、长按等。本篇将详细介绍Android手势识别的基本概念、实现方式以及相关...
在Android开发中,手势识别是构建用户交互丰富的应用程序的关键部分。手势识别允许用户通过触摸屏设备的各种动作来控制和操作应用,例如滑动、点击、捏合等。本教程将聚焦于Android手势识别的实现,主要关注`...
在Android平台上,手势识别是一种常见的用户交互方式,它允许用户通过特定的手势操作来控制或与应用程序进行互动。本项目提供的“Android手势识别源码”是一个可以运行的应用程序,其特点是代码注释清晰,便于理解,...
在Android开发中,手势识别是提升用户体验的重要一环,它允许用户通过特定的手势操作来控制应用程序,如滑动、点击、捏合等。本文将深入解析“android手势识别源码讲解”中的核心概念和实现原理,帮助你理解和掌握...
利用Android开发中的JNI接口,导入OpenCV库进行手势识别,所使用的图片全部从Android的camera中进行采集,手势需要带上红手套,程序识别红色的方块物体,能够识别出1,2,3。。。的数字。
在安卓(Android)平台上,用户自定义手势识别是一项高级功能,允许用户通过特定的手势来触发应用程序或系统级别的操作,从而提升操作效率和个性化体验。本文将深入探讨这一技术,包括其工作原理、实现方式以及如何...
在Android开发中,手势识别是用户交互的重要组成部分,它允许用户通过特定的手势来执行相应的操作,提升用户体验。本文将详细介绍如何使用Android API中的GestureOverlayView、GestureDetector和...
这里我们讨论的是如何利用百度的AI技术,特别是其手势识别API,来实现在Android应用中隔空手势的功能。百度的手势识别API是基于深度学习的,能够高效准确地识别多种手势,为开发者提供了强大的工具。 首先,要使用...
在Android开发中,手势识别(Gesture Recognition)是一项重要的技术,它允许用户通过特定的手势来控制和交互应用,提升用户体验。本示例旨在提供一个实际可行的手势识别Demo,帮助开发者理解和实现这一功能。 首先...
在Android开发中,触屏手势识别是提升用户体验和交互性的重要技术。手势识别允许用户通过在屏幕上绘制特定的图案或动作来执行相应的操作,比如滑动、点击、双击、长按、捏合等。本篇文章将深入探讨Android触屏手势...
在Android开发中,手势识别是实现用户交互的重要一环,`GestureOverlayView`是Android SDK提供的一种用于识别和处理手势的视图组件。这个组件允许用户在屏幕上绘制手势,并提供了相应的回调来处理这些手势。本篇文章...
手势识别在移动设备开发中是一项重要的技术,尤其在Android平台上,它使得用户可以通过简单的手部动作与应用进行交互,提供了一种直观且富有创新性的用户体验。这个名为"GestureTest"的Demo是专为初学者设计的,旨在...
在Android应用开发中,触屏手势识别是提升用户体验的关键技术之一。通过手势识别,用户可以以更直观、自然的方式与应用程序交互,而不仅仅局限于点击和滑动。本篇将深入探讨"Android应用源码之(触屏手势识别)"的相关...
在Android平台上,开发一款带有手势识别的音乐播放器是一项创新且具有挑战性的任务。这个项目融合了Android应用开发、媒体处理、用户界面设计以及手势识别技术。以下将详细阐述涉及的知识点: 1. **Android应用开发...
android手势识别两个对勾手势 OnGestureListener手势识别 可用于加载手势库
在Android平台上,手势识别是移动应用开发中的一个重要组成部分,它为用户提供了一种直观且便捷的交互方式。通过手势识别,用户可以通过在屏幕上划动手指来触发各种操作,如滚动、切换、缩放以及启动应用程序等。这...
安卓系统生物识别技术浅谈