用加速度传感器来进行手势识别器的设计

时间:2012-12-21来源:网络

动作检测

动作检测主要是用获得的三组数据值x_data[N]、y_data[N]、z_data[N]来判定当前动作是系统设定动作中的哪一个,如果符合,则发送这个动作对应的预定义值给演示终端,否则发送NO_ACTION。type_dectction()用来实现动作检测,其中type_move为函数内部变量,用于记录动作代码。type_dectction()进行动作检测的流程如图8所示。

用加速度传感器来进行手势识别器的设计

演示终端

J2ME平台开发环境配置

进行J2ME的开发需要从网络上下载免费的开发环境。运行Eclipse后进行最后的配置:Window->preferences->J2ME->Platform Component然后右键选择 Wireless Toolkil,再选择弹出菜单中的 Add Wireless Toolkil,选择刚刚安装的J2ME Toolkit的安装路径: C:WTK22,这样基本配置就完成了。

J2ME的WTK开发包是专门针对移动无线设备而设计的开发包,并提供了一个统一的平台。在WTK的框架下开发出来的java程序可以被众多的移动设备所支持,能够有效解决兼容性的问题。

软件应用程序

程序分为主进程、串口监视模块和定制化用户界面三大部分,分别基于J2ME不同的类库派生而成,三部分之间通过消息机制相互联系,共同构成整个程序的运行周期。具体每个模块所实现的功能参考下节内容。

软件应用程序的组织结构

本软件应用程序在WTK的手机仿真器下进行设计,分为Base和display两个package。在Base Package中包含MainRoutine.java和RS232Port.java两个java文件;在display Package中的文件较多,主要实现了UI和基本的key响应。下面介绍软件部分的实现方法:

·MainRoutine类

MainRoutine为程序的入口类,它整合了程序中的所有的对象。MainRoutine派生于MIDlet类,重载实现了MIDlet中的startApp、pauseApp、destroyApp等方法,并且在constructor中加入了exitCommand命令,从而实现了手机的关机功能。

可以看出MainRoutine实现了程序的入口和退出,并同时标志了程序的基本框架,给具体的功能应用打下了坚实的基础。

·vCanvas类

vCanvas继承了Canvas类,并增加了externalMsg方法。之所以在其中增加externalMsg方法,是因为其超类Canvas不能动态地响应key,而我们对Canvas的要求是能够通过对串口导入的数据(或按键)得到的keyCode做出相应的动作,比如图片的翻转、文本的滚动等等。于是,我们可以通过vCanvas派生出一系列的子类,实现我们的具体要求,为将来的开发提供了方便。

·DisplayItem类

DisplayItem是基础类,提供了通用的string数据组合。该类的构造方法中需要输入shortText、longText和extra三个string参数,这样就保证了每个DisplayItem都可以返回三个不同长度的文本信息,在不同的场合使用。其中shortText用于UI中的标题显示,longText为Item的主体内容,extra为Item的附加信息。 DisplayItem类在本系统中会被例化来描述菜单和子功能的内容,是应用广泛的一个基础类。

·ImageCanvas类

ImageCanvas同样继承于基础类vCanvas,它的主要功能是实现了对图片的浏览及旋转、镜像等基本操作。

考虑到目前使用手机浏览图片、拍摄图片的多方向性,如果能够通过加速度传感器自动校正图片的方向,使它自动满足我们想要的方向,那么我们就免除了很多不必要的麻烦。于是我们对图片的浏览功能模块增加了向左或者向右旋转90°的功能。这样用户就会惊喜地发现无论他的手机怎样摆放,显示的图片将永远保持与地面垂直。

·ListCanvas类

ListCanvas提供了主画面的显示能力,并将用户操作派生到内部聚合成员上面去。具体功能的Item将包含在ListCanvas之中,每一个Item拥有显示在屏幕上的ShortItem,显示在detail screen中的LongText,还有不被显示的ExtraText,当然其信息我们也是可以得到的。在ListCanvas中,我们可以用“右键”显示Item的详细信息,也可以用SELECT键来标记每个Item。

·ItemListCanvas类:

ItemListCanvas同样继承了vCanvas类,实现了多条目文本浏览的功能,构造方法的输入依次为Display、Displayable、Font、Title和ItemVector。将多条String构造为一个Vector传递给ItemListCanvas后,该类能够提供一个多条目文本实现的用户界面。本系统的“关于本系统”子功能就是通过实例化该类得到的。

结论

本系统采用Freescale的单片机MC9S08QG和加速度传感器MMA7260Q实现了便携式手持设备的手势控制,并采用了开放的J2ME平台实现了终端应用程序。系统完整,实用性强,成本低廉,在满足用户基本操作需要的同时,增加了移动设备操作的趣味性和灵活性。同时,加速度传感器MMA7260Q较小的体积和独特的节电模式更使其在移动设备的应用中有着极大的优势。可以预见,在未来的手持设备系统中会大量采用类似的手势识别功能,因此具有广阔的市场应用前景。

1 2 3 4

关键词: 识别 设计 手势 进行 传感器 加速度

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版