1、引言
在移动互联网发展的同时,移动智能终端也发展的如火如荼,目前主流的智能手机操作系统是:android、ios、symbian、blackberry、windowsphone。在这些操作系统中,android以其免费、开放、完整的特点得到了开发者和用户的喜爱。据2013年第三季度的数据显示,android占据全球智能手机操作系统市场81.3%的份额,中国市场占有率为78.1%。国际电信联盟预测,在2014年底,手机用户将超过70亿。市场研究公司emarketer称,随着尤其是新兴市场中智能手机采用率的日益增加,2014年全球智能手机用户量将达到17.5亿。据工信部统计数据,2014年一月底中国手机用户达12.86亿,但智能手机仍有很大的发展空间。
lbs是在地理信息(gis)技术的支持下,通过无线网络和外部定位方式gps来获取移动终端用户的位置信息,并在电子地图上显示,来提供位置相关的服务。随着互联网的飞速发展和智能移动终端的日益普及,移动定位技术得到了空前的发展,定位所需代价和能耗越来越小。lbs的着眼点已不仅仅局限于军事、交通,现在已经渗透到生活中的其他领域,像无线定位、智能交通、校园地图服务、移动图书馆、用户行为分析等。
为此,以校园lbs服务为例设计并开发了基于android操作系统的个性化校园lbs系统客户端app,以期为师生提供多样化便捷的位置服务。
2、应用客户端设计
2.1、总体设计
根据需求分析定位系统业务需求及系统功能需求,将本系统主要功能模块及结构定位如图1所示。
图1 系统功能模块
校园lbs系统由移动终端系统、后台服务系统所构成。后台的服务系统又可以分为后台数据服务系统、数据库和后台管理系统3部分组成。移动终端应用是指在android平台之上开发的客户端的应用,一般针对手机和平板电脑等设备,它们在功能上略有不同,需要开发不同的程序。后台数据服务系统运行在数据服务器之上,它通过解析使用http或socket协议发送来的移动终端用户数据,来响应客户端的请求,并返回相应的数据。后台管理系统也是在数据库服务器上运行,管理员用户可以通过浏览器方式管理和维护博客的数据。本系统服务器端采用的数据库是mysql,它具有开源、免费等优点,适合于处理中小型数据。
如图2所示,校园lbs系统的客户端和后台服务器端采用c/s结构来进行交互,c/s体系结构的客户端是android应用,它负责接收用户的请求和显示,直接与用户进行交互。应用服务器是位于web服务器端的具有扩展功能的web服务器,它接收客户端的请求,通过web中的应用程序对请求进行处理,通过sql语句等方式调用数据库服务器,然后将数据处理的结果返还给web服务器,再由web服务器传送回客户端。
图2 系统体系构架
2.2、平台的构建
首先,以windowsxp操作系统为开发平台,通过安装jdk、eclipse、androidsdk、adt工具软件,并进行相关配置;同时,利用android开发人员专用模拟器avd(androidvirtualdevice)进行客户端程序的开发和测试,从而搭建android客户端开发环境。
其次,利用eclipse的插件myeclipse进行服务器端环境的搭建,myeclipse集成了对struts、spring、hiber-nate等主流javaee组件开发的支持,简化了javaee的开发。在服务器上安装myeclipse并对其进行环境变量的配置,配合tomcat的安装与部署,对服务器上的mysql数据库进行安装和配置,从而搭建起服务器端系统环境。
最后,利用在安装sdk时获取的keystore,保存md5的指纹,通过jdk中的keytool工具取得md5的finger-print获得md5的指纹,并在http://code.google.com/android/maps-api-signup.html页面中在线获取对应的googleandroidmapapikey密钥,在mapview中加入密匙。若要在工程中显示地图,则要在布局文件layout下的map.xml中的mapview中添加apikey。其关键代码如下:
<com.google.android.maps.mapview
android:id=“@+id/mymapview”
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:clickable=“true”
android:apikey=“0agpcmglyp1tmz-vy0ldjvy-
nfjb_m9g0ayxsyq”/>
2.3、客户端业务的实现
2.3.1、登录注册模块的实现
要使用本系统首先要在android客户端进行登录和注册,当用户在终端点击本应用的图标后就会跳转到登录界面和注册界面,注册过的用户可以直接进行登录进入本系统主界面,未登录过的用户需要先进行注册,然后在登录进入本系统,该模块内部的流程如图3所示。
图3 客户端登录注册流程
其中,部分关键代码如下:
publicclasshttpglobal{
publicstaticstringserviceip=“202.117.137.
175”;//服务ip
publicstaticstringserviceport=“8080”;//服务接口
publicstaticstringservicepath=“/appstoreweb/
client/”;
publicstaticstringserviceurl=“http://”+servi-
ceip+”:”+serviceport+servicepath;//服务url
publicstaticstringapkaddress=“http://”+servi-
ceip+”:”+serviceport;
}
功能运行结果如图4所示。
图4 登录注册功能的实现
2.3.2、定位模块的实现
定位模块可以查看用户在校园内当前所处的位置信息,在本系统中用户首先登录系统,在主界面中点击移动校园,然后在弹出的功能选项中选择定位。该部分的界面布局layout文件map.xml中顶端是两个radiobutton按钮,分别实现交通地图模式和卫星地图模式的切换;中间是一个mapview,用来显示定位之后的结果;界面的底端是两个button按钮,可以实现地图的放大和缩小。本模块功能实现流程如图5所示。
图5 定位过程的流程
其中,部分关键代码及参数设置如下:
//通过criteria获取最好的provider
//设置精度、海拔、方向、费用、耗电
criteriacriteria=newcriteria();
criteria.setaccuracy(criteria.accuracy_fine);
criteria.setaltituderequired(false);
criteria.setbearingrequired(false);
criteria.setcostallowed(false);
criteria.setpowerrequirement(criteria.power_
low);
locationmanager=(locationmanager)getsystemser-
vice(context.location_service);
provider=locationmanager.getbestprovider(criteria,
true);
功能运行结果如图6所示。
图6 定位结果
2.3.3、校内地点查询模块的实现
本模块分为两个界面,一个查询界面;一个地图显示界面。当用户选择要查询的地点后点击查询,就会跳转到地图显示界面定位到查询地点。
本模块的查询界面select.xml文件主要由一个下拉列表spinner和一个查询button构成,spinner的id是android:id=“@+id/spinner”,通过r.id.spinner取得该组件。spinner下拉列表中列出了学校内部各个地点,每个地点的精度、纬度、名称等信息都存储在dbutil.java文件中,用户在spinner中选择一个地点,单击查询后就会把被选地点的经纬度等信息传送到mark.java中,在mark类中通过查询语句在数据库中查询地点的经纬度,创建一个bundle,把经纬度信息、站点名等数据一起打包,放入字符串jd,wd和changsuo中。通过如下代码把数据传入mapactivity中。
intentintent=newintent(this,mapactivity.class);
intent.putextras(bundle);
在mapactivity中通过新建bundle对象来获取经纬度信息,然后转变为经纬度对象geopointgp。然后在mapactivity中引用overlayactivity,通过其中的draw()方法,把经纬度坐标转换成屏幕坐标,在屏幕上显示绘制的图标。
校内地点查询的开发流程如图7所示。
图7 地点搜索模块
地点查询界面和查询功能运行结果如图8所示。
图8 校内场所搜索结果
3、结论
该文的主旨是在android平台上开发一个校园lbs应用系统,结合当前大部分lbs软件不能在小的场所中提供lbs服务的缺陷,以校园为例,根据校园人群的实际工作和生活环境设计了一个校园lbs系统。为校园中的教师、学生及陌生人群的工作和学习生活带来了很大的便利。
随着移动互联网和智能手机的普及,基于位置的服务将会迎来蓬勃的发展,人们将会越来越离不开位置服务。本系统的设计不仅可以应用于校园系统,还可以扩展到其他的领域,为未来小区域内lbs系统提供了参考。
AI赋能农业 数据必不可少
电瓶修复——电动车电池维修常见问题解答系列5
iPhone X产量大幅度缩减,销量会一直持续下滑
小米6砍掉1999元,小米进军高端从此没有了包袱!
盘点BAT及华为的自动驾驶战略布局
基于LBS的Android校园服务APP客户端的设计
AMD移动显卡的产品将迎来爆发,今年主推三款移动显卡
柔性线路板三种主要功能叙述
首家以“智力众筹”方式创立的“鼎阳硬件设计与测试智库”诞生
变频控制技术的应用 数控抽油机和智能抽油机的比较
TC-PR-2G系列2GHz模拟光探测模块
盘点微电网关键技术与国内外发展现状
拾音器和话筒分别有什么优势
贾跃亭说FF91价格 法拉第官方:2018年按计划交车
一文搞定涡轮流量计选用、安装、故障维修注意事项
Uber将把旗下自动驾驶部门ATG出售给Aurora
制作自行车充电器
5G时代运营商该怎样进行短信经营
微信小程序在哪找得到?小程序教程看过来
连接器插头使用时经常会遇到哪些故障应该如何解决