高文智 王劲松 谢炜 林立俊 中国石油大学胜利学院
高校作为一个特殊群体,自行车使用率较高。随着新生与毕业生的不断更替,各大高校校园内废旧自行车不断增加,这些废旧自行车不仅对学校的空间利用及美丽整洁产生较大的影响,而且对高校秩序管理和学生日常生活带来了一定的影响。
如何合理利用这些资源,变废为宝就显得尤为重要。通过对各大高校的统计发现,降低新生对新自行车的需求是问题的关键。将这些闲置自行车改造并结合市面已有的共享单车APP开发一款适合大学校园的共享单车系统,并利用互联网+思维把自行车位置进行共享,那么如何将自行车共享就是系统的关键。自行车位置的获取方式有两种:一种是通过用户手机定位,用户的位置就是自行车的位置;另一种是通过智能车锁自带定位芯片进行定位。
由于自带定位芯片的智能锁成本较高不适合用在本项目中,所以本项目就第一种定位方式进行研究。选取合适的自行车初始投放点,用户在使用系统时,系统通过获取用户的位置信息,并将位置发送到服务器,当用户停止使用系统时,结束回传位置信息。这样用户在使用系统时便可以通过周边检索功能查找附件的自行车。
共享单车系统通过用户的手机获取自行车位置,当用户使用自行车时,系统将获取到的位置信息上传至轨迹管理平台,系统通过检索轨迹管理平台中的自行车,并将自行车位置标注到地图上,用户打开手机蓝牙建立与自行车锁模块的连接,通过扫描自行车二维码开锁,系统自动获取用户的位置并发送到轨迹管理平台。用户手动锁车结束计费,并停止发送位置信息。校园共享单车系统组成如图2-1所示,由服务器,自行车端,手机端三部分组成。
图2-1 系统组成图
校园共享单车系统主要功能如下:
(1)地图加载
用户在进入系统时,首先展示相应的地图信息,并定位用户当前的位置信息。
(2)自行车查找
找车功能为用户搜索出周边一定范围内的自行车信息,方便用户寻找适合自己位置的自行车。并提供地图和导航功能,正确指引用户到达目的地。
(3)用车
用户通过扫描自行车锁二维码开锁用车,开锁成功后开始计费。
(4)还车
用户通过手动关闭自行车锁,并在共享单车APP中确认结束行程。
(5)个人管理
用户可以查看骑行信息以及通过微信、支付宝等两种方式进行线上充值。
系统功能模块采用自上而下的结构化设计方法,能够清晰的认识到系统层次之间的关系。校园共享单车APP功能主要涵盖7大功能,包括:用户注册与登陆、地图显示功能、周边自行车的查找、扫码开锁功能、行程管理功能、付费功能。系统功能设计结构如图2-2所示。
图2-2 系统功能结构图
使用DrawerLayout+NavigationView实现侧滑侧滑展示个人管理界面,首先需要导入v4.design包,然后在布局文件中使用DrawerLayout作为外包装,侧滑菜单页面使用NavigationView。设置DrawerLayout中headerLayout属性和menushuxing调整布局文件和菜单文件,然后在menu中添加点击事件。
3.1.1 登录
系统使用验证登录,用户进入系统后,可以侧滑打开菜单进行登录;用户在点按扫码按钮,当用户没有登录,系统将跳转至登录页面,待用户登录成功后返回重新进入系统主界面。将用户的个人信息保存到数据表中,注册成功后系统自动登陆。
3.1.2 我的行程
系统会在用户手机中用SQLite创建一个数据表,用户存储从系统获得的骑行信息。用户在使用该功能时,查询表中记录信息可得所有的骑行记录。
3.1.3 轨迹回放
用户在结束行程时,可以查看骑行轨迹。调整纠偏和纠正里程计算参数,并绑定骑行线路提高轨迹的精确度,然后使用queryHistoryTrack()将获取到的信息绘制到地图上,如图3-1所示。
图3-1 个人行程图
3.2.1 定位
常用的定位方式有两种:一种是采用内置GPS定位芯片;另一种是采用基站+GPRS。第一种定位精度高,不易受外界因素影响,但是价格较高,不适合用在本系统中。系统采用第二种定位方式,用户的位置获取通过使用类LocationClient和BDLocationClient来获取,并将位置信息保存以备系统使用。自行车位置的获取通过用户的手机,用户在使用自行车时,系统将周期回传自行车位置至鹰眼轨迹管理平台。
3.2.2 周边自行车的查找
如图3-2所示,周边自行车的查找是系统通过类LocationClient和BDlocationlClient,获取用户的位置信息,通过接入百度地图的鹰眼轨迹服务利用EntityListRequest中的queryEntityList()方法来搜索Entity位置信息,然后使用百度地图SDK将entity以自行车覆盖物形式添加到地图上。
图3-2 周边检索图
3.2.3 导航
APP主界面地图上方搜索选项是导航的图标,点击该图标按钮,输入终点位置进入导航界面,系统导航有两种方式,一种是通过APP内置导航方式,通过导入百度地图导航SDK来实现;另一种是通过将导航起始位置发送手机自带的地图软件实现导航。以满足不同用户的使用习惯。
开锁在整个校园共享单车系统中占有中有重要的地位。当前市面使用的主流开锁方式有两种:一种使用传统的机械锁,适应性强,成本低,但是车辆已易丢失,密码易破解,漏洞较大;另一种使用蓝牙车锁,通过匹配用户与智能车锁进行连接,减少了开锁流程,提高了开锁效率。本研究中采用的车锁方案为来智能蓝牙车锁。
3.3.1 扫描二维码
扫码功能实现由有多种方式。模块中主要用到的类为Googlezxing库中的CaptureActivity,通过调用该类,实现对二维码的解析,系统将解析的值保存以备系统的
3.3.2 开锁
用户在扫码之前开启手机蓝牙建立与自行车端的连接,然后将获取到的二维码信息发送至系统后台,系统通过手机将开锁指令下发并开启蓝牙锁,开锁流程如图3-2所示。
图3-3 开锁流程图
用户开锁成功后APP进入二级界面,通过获取手机的IMEI唯一标识码作为系统的entity信息,通过设定轨迹定位周期和回传周期(回传周期最大不能超过定位周期的10倍,回传周期不能小于定位周期的整数倍)节省电量和流量。
3.4.1 entity的选择
接入鹰眼轨迹平台服务,自行车的位置需要使用一个entity信息。该entity应具有唯一性和稳定性,当用户在注销账号时,容易造成entity的空余,显然该方式不满足。通过使用手机IMEI值充当自行车的entity信息,IMEI是手机的唯一标示,通过获取用户手机的权限,取得手机的IMEI值,核心代码如下:
TelephonyManager telephonyManager=(TelephonyMa nager) getSystemService(context.TELEPHONY_SERVICE);
3.4.2 获取骑行信息
通过定义三个变量,时间、距离、费用存储用户的骑行信息。使用类BMKMapPoint将系统获取到的位置进行定义,通过CLLocationDistance来计算相隔两点之间距离。
还车过程是整个系统的重要环节之一。自行车的归还影响着自行车精度。由于采用基站+GPRS的定位方式,自行车的位置信息依赖于用户手机,通过建立手机端与自行车锁之间的蓝牙连接,设置弹窗和震动提示,当用户远离自行车时提醒用户在手机端结束行程。用户在结束行程后,系统停止回传位置信息并结束计费。此时自行车出于离线状态,可以被系统检测到。用户还车图如图3-5所示。
图3-5 还车图
本文主要就高校闲置自行车的大量堆积现象进行分析并提出了相应的解决方案,针对方案中相关的核心技术实现方式进行介绍,最终对APP进行运行测试。测试结果表明所实现的功能能满足设计需要。
[1]宋超. 手机停车APP系统的设计与实现[D].吉林大学,2016.
[2]房爱军. 基于蓝牙的无源锁系统设计[D].南京师范大学,2015.
[3]2016年中国共享单车市场研究报告.
[4]Apterking 体验共享单车后对于Locman技术实现的几点思考http://www.jianshu.com/p/7f16bcc0e42b.
[5]曾大堃.手机GPS定位频率对交通出行信息提取精度的影响研究[D].西南交通大学,2016