在开发xmove的过程中,不止一人给我提出使用手机作为传感器终端的建议。在4.0中,这一愿望成为了现实。
由于未曾在手机上开发过应用,因此本次开发目标非常明确:实现一套手机软件,可以无缝的融入xmove框架之内,通过蓝牙或wifi与电脑通信,从而实现多种功能。
它的名称是assistx for pc. 这是我从著名的代码编辑辅助工具visual assistx的名字上的灵感。这个系统是我在安卓上的第一部作品,功能较为单一。在设计风格上遵循了3.0版本的基本思路。
中文名: 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和手机,以获得更多的可能性。由于大部分手机不支持陀螺仪,因此应用受限,但可参照作者自制的传感器节点的演示视频效果。
软件大小:1.1m
将xmove安卓手机端.apk文件下载入手机,运行即可安装完毕。
将安装包解压完毕后,可看到以下文件。
运行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端的操作界面,可以非常清晰的看到,整个界面包含三个主要部分,从左到右依次为:节点管理器,通信管理器,和应用程序管理器。
通信管理器中,用户可通过下拉菜单选择不同的通信方法,选择后点击“切换模式”按钮,系统会自动搜索可用的地址或端口配置,对于串口而言,它会返回系统可用串口列表,对于蓝牙而言,可自动搜索当前环境中可用的蓝牙设备;对于wifi通信而言,它会自动返回当前可用ip地址。点击开启即可建立通信。
应用程序管理器可方便用户实现不同的功能,下拉列表中选择所需的功能后,单击确定即可切换到想要的工作模式,需注意,pc端的模式需与手机端的模式相同,才可正常的建立应用(除调试类程序:如节点查看器)。
用户可以像搭积木一样,很容易的配置三个管理器,建立不同节点(该应用默认为手机);不同通信方法,如蓝牙,wifi,usb,串口等(该应用仅使用了蓝牙和wifi), 和不同的应用程序(本应用暂时包含了安卓触摸板,鹰击长空和模式识别管理器)等。
整个界面使用简单,当用户配置完成后,可单击屏幕右下角的“开始”按钮,即可连接起三个部分,程序正常工作。
开启手机应用程序,选择不同的通信方法,若是蓝牙,需要配置给程序以蓝牙使用权限,若是wifi,则需要可用的无线局域网。此处更推荐蓝牙,因为蓝牙的传输平稳,而wifi是基于碰撞检测的,发送数据包不平稳,会导致包延迟和突发数据,对实时性应用不佳。
开启pc端用户程序,在通信管理器中,选择与手机端匹配的通信方法。
(1) 使用蓝牙时: 点击通信管理器的“模式切换”按钮,系统会在20s之内搜索可用蓝牙设备,您的手机应该会被检索到。
(2) 使用wifi时,同样点击“模式切换”,可返回系统当前ip,您通常可选择第一项,并输入五位数的端口号。
手机端点击“连接”
pc端在通信管理器中,单击“开启”
配置pc端“应用程序管理器”。
系统应正常建立了连接。在手机端会以toast方式显示“连接成功”,在pc端会显示“连接已建立”。
选择手机应用,并与pc端应用匹配,如手机端选择touchpad, pc端应对应选择“安卓触摸板”。点击pc端右下角的开始按钮,打通全部逻辑信道,开始您的兴奋旅程!
当希望关闭系统时,分别点击手机端和pc端的断开连接,即可关闭应用。
下面介绍比较成熟的典型应用:
如下图,多点触摸板可用于在客厅和演讲场合中,不方便操作pc键盘和鼠标时使用。使用方法非常简单,单手指可实现鼠标移动,双指上下滑动可实现滚轮操作,三指可实现右键操作。
同时,系统还支持空中手势识别,用户可通过在pc端的配置后,实现快捷功能:用户可用手指按下触摸板正前方的touch to move 按钮,在空中做动作,做完后松开,即可识别出用户动作,例如,用户在空中手写字母p, pc端的画图功能就可展开。这种功能可方便的应对快速执行某些功能的场合。
如下图,鹰击长空是一款高拟真,高性能的3d空战游戏,具有世界级的画面和游戏效果,本系统实现将手机作为体感控制器来操作飞机进行战斗,用户体验极佳。
用户进入游戏后,先在pc端配置游戏选单,进入游戏关卡,即可进行游戏。通过倾斜手机,可控制飞机的俯仰和侧翻,通过绕着z轴旋转,可实现手机的偏航。
有四个主要功能键:导弹,锁定目标,红外干扰弹发射,武器切换
一个手控油门系统:可实现飞机加速和减速。这在空中格斗时特别有用。
节点性能监视器是一个可查看当前节点详细信息的应用,可通过实时数据反馈得到当前节点(此应用指手机)的准确的三轴加速度,三轴角速度和三轴磁场计,以及电量信息,同时实时显示当前通信效率,后期还会加入手机位置的地图显示。这对于了解手机状态和位置很有帮助。
该应用可以管理用户建立的模式识别资料库,用户可在两个模式下进行,即训练模式和识别模式。训练模式用户可自主建立资料库,通过训练获得新的动作定义,在识别模式可检测系统识别准确度。这项应用的主要用途在于对“安卓触摸板”动作的学习和训练。
由于开发时间非常紧张,同时要开发pc端和手机端系统,涉及多种核心技术,因此很多细节并未特别完善,以下列出测试中已知的bug,供后续版本解决:
用户在使用wifi模式时,传输不平稳,会导致较严重的包延迟和突发包,这在“安卓触摸板”应用中表现得尤为明显。可能是wifi本身的设计所致,解决余地不大,因此请在实时性要求高的应用下,尽可能使用蓝牙。
当切换入蓝牙模式时,若用户未提供给程序蓝牙权限,点击连接时程序会崩溃,可以解决。
配置完毕的ip和端口不能保存,已找到解决方法。
当用户选择断开连接后,若再次连接可能会出现程序崩溃,建议的做法是正常退出手机程序,重新进入再建立连接。正在解决中。
触摸板应用中,鼠标指针可能会发生瞬移。正在解决中。
很多手机并不支持陀螺仪,因此在进入“使命召唤”应用时,程序会检测到无陀螺仪支持,而无法进入(很难解决)
这是我在手机上的第一个应用,没有发布,赢得了校内安卓开发大赛特等奖(拜于xmove的大背景所赐)。
开发安卓应用要比开发单片机简单太多了,有大量的类库,代码提示,可视化界面和调试工具,无所不能,让我有种无比幸福的感觉。
目前移动互联网如此火爆,完全可以考虑把整个xmove移植到手机上,监测人体运动,并分析,存储和识别动作。这可以完虐kinect。如果顺利,我将在2012年暑假完成这项工作。
上位机的开发是基于winform的,原本考虑wpf,但学习时间实在跟不少了。拜于mvc的思想所赐,逻辑的清晰分离让这个软件的核心成为xfrmwork的雏形。
以下是完整的应用下载