陈飞 罗文广
摘 要:为更好地实现人与手机的智能交互性,设计了基于Android系统的智能交互APP.系统选用基于Android平台的开发技术,使用Eclipse作为系统的开发工具,对智能交互APP涉及相关技术进行了介绍,并提出了在GPS定位中测量点到区域范围的解决策略.主要概述了语音模块、GPS定位模块、WIFI自动链接模块、智能机器人模块、APP跳转、语言分析模块等6个模块设计方法与流程;同时,通过对手机智能交互的需求分析,设计了功能模块,并在系统中实现了相关的技术和算法.
关键词:Android;Eclipse;APP;智能交互
中图分类号:TP273.5 文献标志码:A
0 引言
Android系统是一个基于Linux的开源操作系统[1],主要应用于移动电话等领域,因其自身具有优秀的扩展性和丰富的硬件支持,已经扩展到了可穿戴设备、平板电脑、智能家居等领域,并不断向各个方向渗透.当前,Android系统已经超越了Apple的IOS系统,变成了市场份额占有率最高的智能手机操作系统.
根据2016年美国的一项调查显示,数字媒体使用时间的62%发生在移动端,并且其中绝大多数都来自于应用,其使用时间甚至超过了电视.相比而言,用户花费在桌面上的时间从2013年的49%大降至38%.平均每天人们在使用APP上所花费的时间超过3 h.相比于传统浏览器,移动环境下的APP拥有更加便捷和丰富的用户体验;相比于传统的WAP手机网站,APP具有资源广泛、个性化定制、获取方便、传播迅速、功能和形式丰富而有趣等优势[2];所以,用户使用APP的时长和频次仍在持续增加.因此,设计使用Android的智能交互APP系统具有良好的前景和重要的意义.
1 设计思路与功能
本APP基于安卓平台,通过GPS定位系统描述并记录此处的经度和纬度,利用经纬度相关信息获得对应该区域的一些相关信息.具体功能实现步骤如下:
Step1 用户打开本APP软件进入主界面后,首先发送连接请求,检测用户是否连接网络,如果连接失败,则在主界面弹出对话框“网络连接失败”.这时用户可以选择打开手机流量连接或者点击主界面下方WIFI连接按钮.如果点击WIFI按钮,则自动跳转到WIFI的设置界面,自动打开WIFI并且生成WIFI信号下拉列表,点击可连接到指定WIFI信号,如果需要密码验证则弹出输入密码对话框,验证即可连接[3];
Step2 网络连接成功以后,本APP开始自动获取手机所在位置的GPS地址,并检测用户和指定地址范围的距离;
Step3 当用户到达一定地址范围时,开始智能推送用户可能需要的相关讯息.例如到达车库范围时语音询问用户是否需要打开导航系统,当用户走出“家”这个范围时,本APP在后台将接收天气相关讯息,然后根据天气的相关讯息筛选判断是否需要提示用户携带雨伞等[4].
2 系统总体设计
2.1 软件结构设计
软件结构设计就是一个宏观上把软件需求变成软件表示的过程.主要是利用分层来设计软件模块,然后把软件模块组织成一个优良的层次系统,再描述出各层次模块之间的关系,而且下层模块主要负责为上层模块提供相应支持.
知道了所设计系统的功能之后,先使用结构化设计方法划分軟件层次,再详细设计各层的模块,最后分析功能需求和系统模块之间的调用关系.
2.2 软件模块结构
软件的分层设计是总体设计阶段常使用的一种软件结构设计方法.本APP也采用了分层结构,分别由用户界面层(本APP中的该层是由Eclipse中许多.xml文件组成,如strings.xml,styles.xml等)、用户功能层(本APP中的该层是由Eclipse中许多.java文件组成,如MainActivity.java,GpsActivity.java等)、中间件层(例如使用图灵机器人API,语音机器人API等)和操作系统层(Android 4.0操作系统)等4层结构组成.
本APP软件在操作系统层,使用了Android 4.0操作系统,所以只要用户使用的Android操作系统版本高于4.0都可以使用本软件.
在中间件层编辑了图灵机器人模块(TulingActivity.java)、语音机器人模块(VoiceActivity.java)、GPS定位模块(GpsActivity.java)、WIFI自动链接模块(WifiActivity.java)、APP跳转模块(SkipActivity.java)和语言分析模块(AnalyseActivity.java)等6个主要.java文件,用来实现本APP的主要功能.
在用户功能层,主要通过MainActivity.java文件实现中间件层中各个主要模块间的相互调用关系以及用户界面层中按钮的功能.
用户界面层,主要设置了界面的布局,并添加了图片边框以及一些按钮等,如strings.xml,styles.xml,color.xml等文件.软件层次图如图1所示.
本APP每层与每层之间有着自上至下的依赖关系,并且下层能为上层提供服务接口,如果有一层的内部实现发生了变化,只需要外部的接口不改变,一般不会影响到其他层.而且每层按模块来划分,每个模块相互独立,不相同的模块间由接口相关联,以满足高内聚低耦合的标准[5].
3 模块的具体设计
本次APP的设计参考了当今社会上主流的Android软件开发流程,程序的编写和界面的开发是利用Eclipse[6]集成开发平台并结合使用了集成组件ADT共同完成的,系统的界面设计主要使用了XML页面布局工具,由Style样式文件和图片组合来完成.本APP主要由语音模块、GPS定位模块、WIFI自动链接模块、智能机器人模块、APP跳转模块和语言分析模块等6个模块组成.
3.1 语音模块设计
用户通过语音请求形式输入到语音模块,在语音识别后通过智能机器人进行信息处理,再将处理信息反馈用户.
3.1.1 第三方语音库TTS选择 TTS(Text To Speech)即“从文本到语音”,能够让人和机器进行对话.目前,Android系统能够使用的语音库主要有3种,分别是Svox,Eye和系统自带的Pico TST语音库.但是系统自带Pico TST语音库不支持朗读中文的功能,所以会给系统的开发带来一定程度上的不便.另外两种语音库Eye和Svox都支持中文,但是Eye开源的朗读效果不好,所以最后选择了相对稳定的Svox来作为识别语音资料库.
3.1.2 STT语音识别的引擎选择 语音识别的引擎有Linux的开源语音识别引擎Simon,nuance等,这些开源语音识别引擎在英文领域中的识别效果非常好,但对中文的识别存在着不足,所以本APP选择了google自带的识别引擎[7],可以增强对中文的支持效果.语音模块流程图如图2所示.
3.2 安卓GPS定位设计
3.2.1 GPS坐标与计算 GPS(全球定位系统)主要由三大块组成:卫星、地面控制站、接收机.GPS接收机包括手持机和车载导航机,当前手机几乎都配备GPS定位功能,在手机中的导航功能是由GPS定位技术与其他技术相结合衍生出的功能,因此GPS定位的精度十分重要.
在GPS的经度和纬度中,地球上每个纬度之间的距离可以近似地当作是117 km,每个分度间距当作1.95 km,每个秒度间距当作32 m;但是经度间距会随着纬度的升高而逐渐减小,在某处的经度长度可按照以下公式计算:
1°=111.413cosφ-0.094cos3φ(km)
由手机GPS获得的GPS经纬度数据一般为十进制度,但是使用度分秒表示经纬度可以有一个更加直观的距离概念,十进制度与度分秒之间的转换公式为:
十进度=度+分/60+秒/3 600
所以,经计算经度每变化0.000 01度(0°0'0.036"),则对应在赤道附近的地球表面距离约为1 m多,当在地球南北极极点上时,只有0 m;纬度则是比较固定的,其在地球表面任意地方每变化0.000 01度所对应的地球表面距离大约都是1 m[8].
3.2.2 GPS位置与状态监听 本APP的GPS定位系统主要用来描述并记录用户的经度和纬度.GPS的定位设计,主要是通过位置管理器(LocationMangager)来控制与定位有关设备的,而后由位置监听(LocationListener)来监听设备的开关和状态,从而获得用户的相关位置信息(Location);然后,通过GPS状态监听(GpsStatus.Listener)获取卫星状态信息,并创建一个迭代保持器保存所有卫星;最后绑定监听状态,从而获取经纬度等信息[9].部分代码如下:
Iteratoriters=gpsStatus.getSatellites( ).iterator( ); //创建一个迭代器保存所有卫星,从而获得所有卫星状态
ArrayList
本APP设计加入了智能机器人后,用户可以和智能机器人相互聊天,具有一定的智能交互性.但为了提升其智能程序,还需加入一些检测与触发程序.例如:当用户到达指定GPS坐标范围后,通过所测得的GPS经纬度坐标判断是否已经到达或者离开指定的范围,再智能推送一些相关信息[12].图4是以离开家推送天气状况为例的流程图.
3.5 APP跳转设计
APP跳转设计主要是用来从本APP跳转到其它APP应用,如从本APP跳转到百度导航或天气预报等APP上[13].
以百度导航为例:百度导航的安装包为baidudaohang_61.apk,如果手机上已经安装了百度导航APP,则当需要跳转到本APP时,会直接跳转到本APP;当手机上没有时,则打开浏览器去下载百度导航.部分代码如下:
intent = packageManager.getLaunchIntentForPackage("baidudaohang_61.apk"); //通过包名获取要跳转的APP,创建intent对象
Intent("android.intent.action.VIEW",Uri.parse("http://gdown.baidu.com/data/wisegame/abc0c81aaeedb8f4/
baidudaohang_61.apk")); //如果没有安装APP就打开一个浏览器去下载
3.6 语言分析模块设计
本模块主要功能是用来给用户设置提醒功能.例如当用户走出家的GPS范围时,后台通过图灵机器人发送本地天气的请求,在后台接收到的数据中选取本日天气数据,从而分析天气情况.如果有“雨”字,则通过图灵机器人给用户输出提醒带伞的语音与文字.同理,当检测到车库范围时询问用户是否带伞,当用户回答表示肯定的语气词时,后台发送跳转请求等.
4 演示成果
本次APP设计基本功能已经完成,GPS可以获取到所在的坐标.下雨天离开“家”的范围后,手机会提示用户带伞;回“家”时,WIFI会自动连接上WIFI,并提示用户是否需要菜谱等信息;当用户进入“车库”范围时,会提示是否需要GPS导航等.语音机器人也可以达到智能交互的目的.
启动APP后当用户走出“家”的GPS设定范围后,本APP会在后台自动查询天气情况,如果城市有雨将会提示用户带伞,即设置一个触发,后台接收天气信息,如果有“雨”字,则触发提示带伞信息.如果用户询问城市天气,本APP将会自动播报出该城市4 d内天气情况,APP界面即演示效果如图5所示.
当用户需要连接WIFI时,点击WIFI选择按钮,手机可以自动打开WIFI功能,并显示WIFI信号列表,点击即可快速连接,演示效果如图6所示.
当用户希望知道自己的GPS地址时,点击“GPS地址”按钮可以准确得到用户所在处经纬度信息,演示效果如图7所示.
当到达车库时,语音提示询问用户是否需要打开百度导航APP,当接收到用户需求后触发打开百度导航APP,如果没有装百度导航APP,则会跳转到下载页面.这里演示了直接跳转打开百度导航APP,如果没有装百度导航APP,跳转到下载页面效果相似,只是跳转部分打开的是浏览器,演示效果如圖8.
5 总结
此APP设计基本功能已经完成,GPS可以获取到所在的坐标.下雨天离开“家”的范围后,手机提示用户带伞;回“家”时,自动连接上WIFI,并提示用户是否需要菜谱等信息;当用户进入“车库”范围时,提示是否需要GPS导航等.语音机器人也可以达到一定程度智能交互的目的.
所得GPS坐标是一个随机概率的定位结果并且与设备硬件有关,在某点定位的精度大约在1 m左右.获取GPS坐标的速度与手机设备硬件和手机信号强度有关,信号不好情况下识别会有一定延迟.
目前APP还只是一个雏形,本次设计仍存在一些不足需要完善:GPS地址和WIFI信息还没有联系到GPS地图信息库中,指定的GPS位置等暂且还需要自己设定;获取的GPS地址只选择接收了经度和纬度信息,如果车库在住宅底下,识别会有一定的影响,因此,最好再加入海拔高度信息来识别设定的GPS地址;若所处环境基站较多,位置信息的识别也可以用基站来定位.
参考文献
[1] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.
[2] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.
[3] 杨润锋,方华,刘文烽.基于Android平台的新型预应力智能张拉监控系统研究[J].广西科技大学学报,2015,26(4):75-79.
[4] 何维,张彦会,粟腾超,等.基于GPS/GPRS/RFID物流车载终端的设计[J].广西科技大学学报,2014,25(4):59-62.
[5] 江燕良.基于Android智能终端的远程控制系统[J].电子技术应用,2012,38(8):129-132.
[6] 叶达峰.Eclipse编程技术与实例[M].北京:人民邮电出版社,2006.
[7] APARNA S, KUMAR VS. Speech recognition using backoff N-Gram modelling in Android application[J].IEEE,2014,33:55-58.
[8] 盖索林.Google Android开发入门指南[M].2版.北京:人民邮电出版社,2009.
[9] 刘胜前,陈立定.基于Android平台的车辆导航系统设计与实现[J].自动化与仪表,2012,27(4):1-4.
[10] 余志龙, 王世江.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010.
[11] 宋小倩,周东升.基于Android平台的应用开发研究[J].软件导刊,2011,10(2):104-106.
[12] 吴亚峰,索依娜.Android核心技术与实例详解[M].北京:电子工业出版社,2010.
[13] 关晶鑫,李永全.基于Android的手机购物终端系统设计[J].电子世界,2013(2):107-108.
Abstract:In order to implement the intelligent interaction of the mobile phone, an intelligent interactive APP based on Android is designed. Eclipse is adopted as the development tool based on Android platform development technology. The relevant technologies of intelligent interactive APP are introduced. And the solution to the measurement point in the GPS location is put forward. The design methods and procedures of the six modules, such as voice module, GPS positioning module, WIFI automatic link module, intelligent robot module, APP jump, language analysis module are summarized. At the same time, based on the analysis of the demand for the intelligent interaction of the mobile phone, the function modules are designed. And the related technologies and algorithms are implemented in the system.
Key words: Android; Eclipse; App; intelligent interaction
(學科编辑:黎 娅)