编者注: X-MOVE是作者在业余时间于2010年6月份启动的以运动传感开发,算法和应用的平台,目前已经发展了三个版本,第四版的开发接近尾声。发布在博客园仅为交流技术,不存在商业目的,作者保留一切权利。
一 . 简介
在开发XMOVE的过程中,不止一人给我提出使用手机作为传感器终端的建议。在4.0中,这一愿望成为了现实。
由于未曾在手机上开发过应用,因此本次开发目标非常明确:实现一套手机软件,可以无缝的融入XMOVE框架之内,通过蓝牙或WIFI与电脑通信,从而实现多种功能。
它的名称是AssistX for PC. 这是我从著名的代码编辑辅助工具Visual AssistX的名字上的灵感。这个系统是我在安卓上的第一部作品,功能较为单一。在设计风格上遵循了3.0版本的基本思路。
AssistX For PC
中文名: Xmove -PC助手
作者:北京邮电大学 热情的沙漠
软件类型:免费
所属分类:便捷生活
本软件系统包含PC端和安卓手机端两部分。
l 安卓手机端特性:
- 系统要求:Android 1.5版本以上
- 分辨率要求:800*480(其他分辨率未作真机测试)
- 软件大小:1.1M
- 所需权限:蓝牙和Internet局域网访问权限
- 需要加速度计和磁场计支持,部分应用需陀螺仪。
l PC端特性:
- 支持windows xp ,Windows vista和Windows 7
- 需安装.NET Framework 4.0版本(安装包里已提供)
- 若需运行如“鹰击长空”的第三方PC应用时,需事先安装完毕,并将安装路径索引至软件数据库。
- 软件大小:4.5MB
- 要求PC蓝牙或WIFI功能支持。
二. 软件简介
AssistX for PC,是XMOVE系统架构中的安卓版本,用以通过手机更方便的解决人机交互问题,以手机作为控制器,在不增加成本的情况下方便人在客厅及演讲等场合进行展示,娱乐和工作。通过手势识别,动作传感器运算,以及蓝牙和WIFI的支持,用户可方便的实现手机和PC的互联,你可将手机变身为无线多点触摸板,体感控制器,甚至整个家居生活中的控制核心。该软件包含PC端和手机客户端两个部分,易用快捷,插件系统设计支持功能的无限升级。目前已支持的PC应用有:
l 无线多点触摸板
l 鹰击长空 体感控制游戏
l 使命召唤 体感控制游戏(需陀螺仪支持)
l 极品飞车 体感控制游戏(正在调试中)
系统旨在提供完善的平台,以联系PC和手机,以获得更多的可能性。由于大部分手机不支持陀螺仪,因此应用受限,但可参照作者自制的传感器节点的演示视频效果。
软件安装需求
手机端:
- 系统要求:Android 1.5版本以上
- 分辨率要求:800*480(其他分辨率未作真机测试)
- 软件大小:1.1M
- 所需权限:蓝牙和Internet局域网访问权限
- 需要加速度计和磁场计支持,部分应用需陀螺仪。
PC端:
- 支持windows xp ,Windows vista和Windows 7
- 需安装.NET Framework 4.0版本(安装包里已提供)
- 若需运行如“鹰击长空”的第三方PC应用时,需事先安装完毕,并将安装路径索引至软件数据库。
- 软件大小:4.5MB
- 要求PC蓝牙或WIFI功能支持。
三. 系统部署方法
手机端
将XMove安卓手机端.apk文件下载入手机,运行即可安装完毕。
PC端
- 将安装包解压完毕后,可看到以下文件。
- 运行BthDriverSetup.exe, 安装蓝牙驱动。
- 运行setup.exe,安装主系统程序。
- 插入蓝牙硬件适配器(若PC本身自带,则不需要),windows会自动安装其驱动。
- DotNetFX40是.NET Framework 4.0的包,若用户未安装,系统会自动将其安装到客户端本地,该库是windows和本软件新功能的基石,请保证安装。
- 错误分析:虽然本软件经过了作者的精心开发,但由于开发时间极为仓促,安装系统仅在三台PC上做过测试,因此不一定能保证能完美的运行于所有平台之上。常出现的问题如,未安装.net 4.0,解决方法可参考第五条;以及无法正常启动(双击之后无响应),这通常是由于蓝牙驱动未安装成功或不包含蓝牙硬件造成的。如出现这种情况,请再尝试第四步,或联系本作者。
- 若正常安装,则在用户桌面上出现如下图标:
双击即可启动。
四. 界面介绍和简要功能说明
手机端
- 开启界面
当用户打开程序时,软件每次都会显示欢迎界面,如左图所示,持续两秒钟后,将自动进入主菜单。
2. 主界面
主界面以尽可能简洁为主,包含两大部分:通信控制和所需程序,在通信方法选择中,你可以选择蓝牙(请赋予本程序蓝牙权限)和WIFI(需打开WIFI开关并连入局域网) 点击“连接“按钮后,系统将会自动尝试与PC建立连接,当连接完毕后,你即可选择你想要的应用。
3.配置界面
当用户使用WIFI进行连接时,需要知道PC机的IP地址和端口,IP地址可通过PC服务器端获得,具体可参考后续章节,端口用户可自行设置,但不能过于简单(否则可能与系统或其他软件端口发生冲突。点击保存后,即可保存设置。
4. 应用界面
下面展示了主要的应用界面,当用户成功建立连接后,即可通过主界面的应用选择器选择所需功能。详细可参考后续章节,此处不进行详述。
PC端界面
上图是PC端的操作界面,可以非常清晰的看到,整个界面包含三个主要部分,从左到右依次为:节点管理器,通信管理器,和应用程序管理器。
通信管理器中,用户可通过下拉菜单选择不同的通信方法,选择后点击“切换模式”按钮,系统会自动搜索可用的地址或端口配置,对于串口而言,它会返回系统可用串口列表,对于蓝牙而言,可自动搜索当前环境中可用的蓝牙设备;对于WIFI通信而言,它会自动返回当前可用IP地址。点击开启即可建立通信。
应用程序管理器可方便用户实现不同的功能,下拉列表中选择所需的功能后,单击确定即可切换到想要的工作模式,需注意,PC端的模式需与手机端的模式相同,才可正常的建立应用(除调试类程序:如节点查看器)。
用户可以像搭积木一样,很容易的配置三个管理器,建立不同节点(该应用默认为手机);不同通信方法,如蓝牙,WIFI,USB,串口等(该应用仅使用了蓝牙和WIFI), 和不同的应用程序(本应用暂时包含了安卓触摸板,鹰击长空和模式识别管理器)等。
整个界面使用简单,当用户配置完成后,可单击屏幕右下角的“开始”按钮,即可连接起三个部分,程序正常工作。
五.详细操作流程
首战:建立连接
- 开启手机应用程序,选择不同的通信方法,若是蓝牙,需要配置给程序以蓝牙使用权限,若是WIFI,则需要可用的无线局域网。此处更推荐蓝牙,因为蓝牙的传输平稳,而WIFI是基于碰撞检测的,发送数据包不平稳,会导致包延迟和突发数据,对实时性应用不佳。
- 开启PC端用户程序,在通信管理器中,选择与手机端匹配的通信方法。
(1) 使用蓝牙时: 点击通信管理器的“模式切换”按钮,系统会在20s之内搜索可用蓝牙设备,您的手机应该会被检索到。
(2) 使用WIFI时,同样点击“模式切换”,可返回系统当前IP,您通常可选择第一项,并输入五位数的端口号。
- 手机端点击“连接”
- PC端在通信管理器中,单击“开启”
- 配置PC端“应用程序管理器”。
- 系统应正常建立了连接。在手机端会以toast方式显示“连接成功”,在PC端会显示“连接已建立”。
- 选择手机应用,并与PC端应用匹配,如手机端选择Touchpad, PC端应对应选择“安卓触摸板”。点击PC端右下角的开始按钮,打通全部逻辑信道,开始您的兴奋旅程!
- 当希望关闭系统时,分别点击手机端和PC端的断开连接,即可关闭应用。
Enjoy 应用
下面介绍比较成熟的典型应用:
l 多点触摸板
如下图,多点触摸板可用于在客厅和演讲场合中,不方便操作PC键盘和鼠标时使用。使用方法非常简单,单手指可实现鼠标移动,双指上下滑动可实现滚轮操作,三指可实现右键操作。
同时,系统还支持空中手势识别,用户可通过在PC端的配置后,实现快捷功能:用户可用手指按下触摸板正前方的touch to move 按钮,在空中做动作,做完后松开,即可识别出用户动作,例如,用户在空中手写字母p, PC端的画图功能就可展开。这种功能可方便的应对快速执行某些功能的场合。
l 鹰击长空 体感游戏
如下图,鹰击长空是一款高拟真,高性能的3D空战游戏,具有世界级的画面和游戏效果,本系统实现将手机作为体感控制器来操作飞机进行战斗,用户体验极佳。
用户进入游戏后,先在PC端配置游戏选单,进入游戏关卡,即可进行游戏。通过倾斜手机,可控制飞机的俯仰和侧翻,通过绕着Z轴旋转,可实现手机的偏航。
有四个主要功能键:导弹,锁定目标,红外干扰弹发射,武器切换
一个手控油门系统:可实现飞机加速和减速。这在空中格斗时特别有用。
l 节点性能监视器
节点性能监视器是一个可查看当前节点详细信息的应用,可通过实时数据反馈得到当前节点(此应用指手机)的准确的三轴加速度,三轴角速度和三轴磁场计,以及电量信息,同时实时显示当前通信效率,后期还会加入手机位置的地图显示。这对于了解手机状态和位置很有帮助。
l 模式识别管理器
该应用可以管理用户建立的模式识别资料库,用户可在两个模式下进行,即训练模式和识别模式。训练模式用户可自主建立资料库,通过训练获得新的动作定义,在识别模式可检测系统识别准确度。这项应用的主要用途在于对“安卓触摸板”动作的学习和训练。
五. 已知的BUG
由于开发时间非常紧张,同时要开发PC端和手机端系统,涉及多种核心技术,因此很多细节并未特别完善,以下列出测试中已知的BUG,供后续版本解决:
- 用户在使用WIFI模式时,传输不平稳,会导致较严重的包延迟和突发包,这在“安卓触摸板”应用中表现得尤为明显。可能是WIFI本身的设计所致,解决余地不大,因此请在实时性要求高的应用下,尽可能使用蓝牙。
- 当切换入蓝牙模式时,若用户未提供给程序蓝牙权限,点击连接时程序会崩溃,可以解决。
- 配置完毕的IP和端口不能保存,已找到解决方法。
- 当用户选择断开连接后,若再次连接可能会出现程序崩溃,建议的做法是正常退出手机程序,重新进入再建立连接。正在解决中。
- 触摸板应用中,鼠标指针可能会发生瞬移。正在解决中。
- 很多手机并不支持陀螺仪,因此在进入“使命召唤”应用时,程序会检测到无陀螺仪支持,而无法进入(很难解决)
六. 总结
这是我在手机上的第一个应用,没有发布,赢得了校内安卓开发大赛特等奖(拜于XMOVE的大背景所赐)。
开发安卓应用要比开发单片机简单太多了,有大量的类库,代码提示,可视化界面和调试工具,无所不能,让我有种无比幸福的感觉。
目前移动互联网如此火爆,完全可以考虑把整个XMOVE移植到手机上,监测人体运动,并分析,存储和识别动作。这可以完虐kinect。如果顺利,我将在2012年暑假完成这项工作。
上位机的开发是基于WinForm的,原本考虑WPF,但学习时间实在跟不少了。拜于MVC的思想所赐,逻辑的清晰分离让这个软件的核心成为XFrmWork的雏形。
以下是完整的应用下载
作者:热情的沙漠
出处:http://www.cnblogs.com/buptzym/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。