基于LBS的足迹移动分享系统研究与实现

2018-11-19 10:58操凤萍余跃海刘雪娟
软件导刊 2018年11期
关键词:日志客户端界面

操凤萍,余跃海,刘雪娟

(1.东南大学成贤学院 电子与计算机工程学院,江苏 南京 210032; 2.江苏金智教育信息股份有限公司,江苏 南京 210000; 3.南京航空航天大学 计算机科学与技术学院,江苏 南京 210016)

0 引言

随着移动通信与移动地理信息技术的飞速发展,基于位置服务(LBS)技术被广泛应用于社交、旅游等领域。微信、陌陌等基于LBS的SNS开始普及,但其提供的LBS功能大都只涉及签到、附近的人及群组等功能[1]。针对LBS在旅游信息服务方面的应用,学者们进行了大量研究。文献[2-14]设计并实现了一种基于LBS与游客特征大数据分析的旅游信息个性化推送服务系统;文献[3]实现基于LBS & GIS的旅游资源普查、评价与可视化查询系统;文献[5]提出的系统实现了地图浏览、地图搜索与路径查询等功能;文献[8]提出的系统可实现地图查看、移动定位、路线规划、景区信息查询、报警求援等功能。但这些APP的应用主要局限于旅游信息的查询、推送、路径规划等基于位置的信息服务上,并未对旅行过程中,基于用户实时位置的个性化分享进行深入研究。微信“朋友圈”的流行表明,“分享”成为旅行者传播旅途所见所闻、传递快乐心情的重要方式。然而常用的微信“朋友圈”基于位置的分享功能相对有限,在分享地点时,只能分享人们当前所在位置,而无法对行进路线进行实时分享,也无法在“地图应用”上进行路线规划,且分享的各条信息之间较为独立,信息连贯性较弱。

本文从旅行者在旅行中对移动位置信息分享的需求出发,提出基于LBS的足迹信息分享方式,用户不仅可以进行旅行日志实时分享、旅行路径规划、收支记录并对其进行量化分析,还能实时“发现”周围用户并关注他们的旅行信息。该设计不仅可以满足用户基于位置的个性化实时分享需求,同时在解决旅游信息推送延误及信息不对称问题方面发挥了重要作用[7]。

1 系统分析与总体设计

1.1 基于LBS的社交APP应用分析

LBS 是指在移动计算条件下通过空间定位技术、地理信息技术、嵌入式技术及无线网络技术,为用户提供基于地理位置的服务[15]。基于LBS的服务被广泛应用于各种商业活动中,如地图服务、指南服务、紧急信息服务等[16]。美国社交服务网站 Foursquare 的出现,启发了国内Social Networking Services(SNS) 网站增加基于地理位置服务的功能[17]。LBS 应用与 SNS 相结合成为目前 GIS 发展的热点方向。用户可以依托 LBS 服务,借助智能终端采集当前的旅游资源位置、查询附近资源信息等[18-19]。国内市场占有率较高的微信、腾讯QQ、新浪微博、陌陌等社交软件仅具备部分位置服务功能,随着游客对旅游自主性及个性化分享要求的提升,传统的信息分享方式很难满足当今游客的需求。因此,建立一个基于位置服务(LBS)的旅行足迹移动分享系统是十分必要的。

1.2 系统功能需求

由于旅游活动具有很强的位置移动性,基于LBS的足迹移动分享系统使用户旅行时可以随时将途中见闻、感想、照片等以“时间轴”为次序,编写为旅行日志并发布;实时“发现”附近的其他用户并关注其旅行日志,以实时掌握旅游动态;在电子地图上自定义标记与路径规划;记录途中的零碎开销、收支情况,并对收支进行量化分析与直观展示;调用第三方打车或订餐服务。系统设计了关注、地图、日志、账本等模块以满足用户需求,如图1所示。

图1 系统功能结构

关注模块:该模块用于展示被关注用户的日志信息, 用户以客户端为入口,可以通过选择距离,关注周边用户动态。

地图模块:用户可以通过相应功能在地图上自定义标记,可在地图上绘制多边形、折线,添加文字图标,并进行路径规划。

日志模块:用于用户以“时间轴”为次序编写旅行日志并发布。

账本模块:用户在旅途中随时记录开销,并进行收支直观显示。

其它模块:作为第三方应用的调用接口,用户需要时,点击按钮便可通过该接口直接在当前界面打开对应的第三方应用。

1.3 LBS服务需求

系统是基于移动定位技术(LBS)服务加以实现的,LBS服务为终端提供定位服务并针对用户周边位置进行分布查询。LBS定位服务主要由移动终端、通讯网络、服务中心、定位系统构成[20],如图2所示。

图2 移动位置服务结构

1.4 系统总体架构

系统采用移动终端应用/系统服务/数据库体系结构。移动终端应用完成定位、搜寻周边与日志发布服务,可获取用户实时位置,同时接收用户的服务请求等数据,继而调用如定位、日志等相关功能模块提供的服务,同时显示返回结果。系统服务为终端提供日志生成、日志发布、定位服务并针对用户周边位置进行分布查询。数据库存放用户信息、日志信息、账本信息等。系统结构如图3所示。Android客户端根据Android系统的特点将客户端结构分为三层:样式界面(View)、功能实现(Class)、后台数据(Data)。同时,系统通过集成百度地图的开发工具包(BaiduMap SDK)进行基于LBS的相关功能开发。Servlet服务端为“登录”、“记录日志”、“获取日志”等功能提供服务。客户端发送GET/POST请求并与Servlet的相应方法进行交互。

图3 系统结构

1.5 数据传输方案设计

客户端应用通过HTTP请求将用户产生的数据发送给服务端,并在服务端对数据进行解析。主要的系统对象有日志(LogEntity)和用户(User)。“用户”对象涉及的功能包括登录验证、用户信息展示,涉及的属性有用户名和密码。对于这种涉及少数参数的数据传输,采用发送和接收请求时过程较为简便的GET请求方式;“日志”对象涉及到的功能包括记录日志、发布日志、查看日志,涉及到的属性有时间、日期、日志内容、图片内容等涉及多个参数的数据传输,采用保密性与数据封装性较好的POST请求方式。在客户端接收服务端返回的数据时,则采用轻量级的JSON格式进行传输,然后在客户端通过Gson进行数据解析。

1.6 数据库设计

服务端使用MySQL作为数据库存储用户与日志相关数据。“用户信息表”用来记录所有用户信息,包括用户姓名、用户密码、用户性别等属性;“日志表”用来记录所有用户发布的日志信息,包括:用户姓名、日志年份、日志月份、日志文字内容、日志图片内容等信息。利用Android系统的SQLite数据库即可轻松、高效地进行存储,从而满足了缓存需求。系统的“账本”功能便是使用SQLite数据库进行数据存储,既方便用户随时记录,又能很好地对数据进行实时统计。

2 系统详细设计与实现

采用C/S计算模式,客户端使用Android SDK。设计重点包含两部分:Servlet服务端、Android 客户端。Android客户端部分在Window操作系统上使用安装了Android ADT的Eclipse进行编码实现,数据库使用MySQL数据库,服务端程序采用Servlet并将程序放在Tomcat服务器上运行。

2.1 Android客户端

客户端主界面包括主界面菜单与主界面功能区。由于系统中的“地图”和“日志”子模块的呈现方式都需要尽量大的空间,所以选择“侧滑菜单+主界面”的布局结构。界面最顶层采用Android系统的抽屉布局——DrawerLayout,该容器内部包含两个区域,一个用来展示界面主要内容,另一个用来展示左侧菜单。界面主要内容的展现则是采取Android系统最新的“碎片化布局”,通过在该Activity里加载不同模块对应的Fragment进行功能切换。主界面如图4、图5所示。

2.2 服务端Servlet

系统服务端采用Servlet作为客户端与数据库之间交互的桥梁,Android客户端发送的GET/POST请求在服务端被Servlet对应的方法拦截到,进行数据处理后与数据库交互。其在Eclipse的JavaEE内置模块下进行Servlet开发,编写Servlet相关方法为“登录”、“记录日志”、“获取日志”等功能提供服务。客户端发送的GET/POST请求在服务端被Servlet类进行处理,主要包括登录操作类LoginByGet与日志存储类Log_sava。登录操作类处理GET请求,接受客户端传来的用户名与密码进行验证,并返回验证结果;日志存储类处理POST请求,接受传来的日志信息进行存储。由于一条日志内容会包含数字、文字等内容,而且参数数量较多,因此采用POST请求进行传输与交互。

图4 系统启动页

图5 菜单界面

2.3 地图模块

该模块的主体是一张放在Fragment中的电子地图,通过继承并重写百度地图开发包的MapFragment,以开发自己的MapFragment。在地图右下角添加功能入口按钮,包括:标记开关、绘图及地图菜单按钮。用户进入该子模块界面后,系统会自动在地图上定位用户位置。用户可以通过手势拖动缩放地图进行查看,在需要标记某个位置时点击右下角的“标记”按钮,对地图进行标记,点击地图时会调用百度地图SDK的点击监听:com.baidu.mapapi.map.BaiduMap.OnMapClickListener;用户进入该子模块时会自动进行定位,在代码监听到定位成功信号之后,通过百度地图API中的类RadarUploadInfo对用户位置与昵称等信息进行封装,并通过代码调用类UploadInfoRequest自动上传;在地图菜单中使用“周边”选定范围发现周边用户,点击地图上发现的用户图标,可以查看昵称和距离信息,然后点击“关注”按钮即可进行关注;用户在地图菜单中点击“绘制”功能按钮,可以在地图上绘制自定义的图形和文字内容进行标注与路径规划。如图6、图7所示。

图6 地图

图7 路径规划

2.4 关注模块

该模块用于展示被关注用户的日志信息, 用户以客户端为入口,可以通过选择距离关注周边用户动态。布局上分为两块区域:日志标题与日志内容。日志标题用来展示被关注对象的头像、昵称、性别、行程等信息;日志内容用来展示被关注对象的最新日志信息。当进入“关注”选项卡时,如果用户之前还未关注任何其他用户,则会在界面显示“可以去关注下他人哦!”的提示;如果用户之前已关注过他人,该界面会显示被关注对象的日志信息,如图8、图9所示。

图8 发现周边用户

图9 关注周边用户

2.5 日志模块

“日志”子模块是专门让用户编写旅行日志的模块。该模块界面分为两部分:日志标题与日志内容。日志标题显示该日志的年份、出发地、目的地、简介等信息。用户点击“添加”按钮可以进行日志添加,并在添加日志时编辑文字与图片内容(可选)。在选择图片时可以现场拍照获取图片,也可直接从相册中选择已有图片,从而极大地方便了用户使用。该模块Fragment的布局使用Android系统的ListView控件作为顶层布局,展示每条日志内容,并将每条日志按照发布时间进行排序。同时,选择在ListView控件中嵌入GridView控件,使日志中的图片能够清晰、有序地展示给用户。在实现过程中,该模块布局中ListView与GridView都是自带滑动效果的容器。该模块区别于微信“朋友圈”功能,是根据“时间轴”进行界面设计,让用户在编写日志的同时,也能详细记录下日志时间,配上自动生成的“时间节点”,使日志形成一个整体,如图10所示。

图10 “日志”展示

2.6 账本模块

“账本”子模块可方便用户在旅途中随时记录下零散开销。用户可以通过“记一笔”进行记录,记录时可以自己选择时间,也可选择当前时间,通过输入金额、选择类型、设置备注进行记录。在该模块中,数据库使用Android系统内部的一种轻量级数据库SQLite,账本数据库直接在代码中进行创建与操作。该模块界面采取简约风格,能简明地显示总支出和总收入,并且用户可以通过点击时间板进行特定日期记录查询。

2.7 其它模块

为了方便用户使用,系统在主界面菜单中添加了两个第三方应用调用接口,用户点击按钮便可通过该接口直接在当前界面打开对应的第三方应用。代码中使用Intent的方法,传入需要调用的第三方应用的包名(例如:com.sdu.didi.psnger)与主类名(例如:com.didi.sdk.splashActivity)实现调用。

3 测试与应用

3.1 测试

测试是软件工程中必不可少的一项重要环节,测试具体内容是根据软件功能设计的测试用例。主要测试用例如表1所示。

表1 主要测试用例

此外,针对系统界面、控件、数据库访问、提示信息与数据准确性进行了统一测试。同时,在测试过程中对代码规范化与数据库功能也进行了相应优化。测试结果表明,该系统所有功能均能按照要求运行,具有较好的可扩展性。

3.2 系统应用

通过测试与实际运行,基于 LBS 的足迹分享方式使用户在旅游中可以轻松规划旅行路线,分享个性化的旅行日志,关注附近用户以了解周边用户的实时旅行动态,为旅行者提供了极大方便;其次,系统内置“收支记录”功能,可让用户准确记录途中所有收支及用途,对收支进行直观展示与量化分析,从而帮助用户有效地控制花销。

4 结语

本文通过分析旅行者对移动位置的信息需求,设计并实现了基于LBS的足迹移动分享系统,实现了旅行路径规划、实时旅行日志发布、周边用户信息关注、收支情况记录等功能。系统充分利用移动定位技术实现旅行者的个性化需求,在一定程度上为游客在旅游地的信息不对称问题提供了解决方案。

猜你喜欢
日志客户端界面
一名老党员的工作日志
扶贫日志
国企党委前置研究的“四个界面”
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
游学日志
人机交互界面发展趋势研究
手机界面中图形符号的发展趋向