为邻——基于GNSS定位技术的Android移动App

宣传视频:

作品安装说明

  1. 手机浏览器访问我们的个人网站“ https://monsterstars.github.io/static/zhsq.apk”
  2. 点击“下载客户端”按钮弹出下载链接
  3. 使用下载的apk包并进行安装与权限赋予
  4. 打开安装完毕app进行根据页面提示进行登录注册

作品效果图

Android前端地图API接口部分代码
message
Android前端Adapter部分代码
message
后端数据库接口部分代码
message
后端数据库表
message
Android界面主页界面设计
message
Android界面任务界面设计
message
Android界面个人中心界面设计
message

作品思路

创意:

项目的创意起源于我们生活中一个很微小的细节,因大学校园区域较大,同学们往来菜鸟驿站拿取快递较为不便,出现了互助“雏形”,即部分同学在拿取自己快递的同时在群聊中提出可顺手帮取的信息,有此需求的其他同学支付一定的金额换取方便。也因此基本需求衍生出了不少其余业务,如搬置物品、代买零食、代购日用品等小需求。在各种需求而产生的各类互助群聊中来去穿梭而感到麻烦不已的三个人一拍即合,决定做一款能够方便发布接取互助任务的手机App来方便大家。在与指导老师联系并调研讨论后,我们寻找到了问题的根源,即当代人与同一社群成员交流度急剧下降,而导致的互助困难问题。在这种情况下许多人选择通过微信、QQ互助群,这样不仅交流十分困难,效率也十分低下。在准备将其作为一款定位为“社群互助”的App的同时,我们也同时结合社会上的动态,决定加入呼救功能以在互助之余提供一个给予老人、小孩、女性等弱势人群的呼救功能,充分加强社群互助与用户使用度。

策划:

开发开始前,我们将 App 开发分为4个板块,产品功能探讨及流程设计;产品 UI 界面设计及编码;数据库设计及编码;前后端数据交互。并进行了前后端的分工和框架的选择。

在开发开始后,我们计划在每周末开会讨论各分块所遇困难及收获技巧。各个模块的负责人会汇报本周内进展,使各模块成员可互相掌握他人进度,有利于后期各个模块间的沟通交流,分工整合。

根据项目实际,灵活调整计划表。项目推进的过程中会遇到很多我们事先无法预料的困难,如果某个模块因为未知的困难而导致进度延误,可能会影响到其他模块,得益于每周的例会制度,我们可以灵活的调整进度表,安排下一步的工作。

制作:

前端开发:主要使用 JAVA 与 xml 语言编写页面逻辑与页面布局,使用 Fragment 呈现 UI 视图,使用 Activity 管理 Fragment。使用 OkHttp 和 Gson 库进行 http 链接与解析 Json 数据。使用 Google 推荐的 Material Design 设计制作页面。

后端开发:在阿里云上部署,使用 java 语言开发和 mysql 数据库,通过 PHPmyadmin 实现在线数据库管理,后台搭建使用 spring,springmvc,mybatis 框架作为底层架构实现数据库连接,前后端请求的数据交换格式,使用统一的标准 json 格式。

合成:

依照前期使用Axure设计的原型进行编码。我们采用了Git开源式版本管理系统进行前端项目整合。因为Git中有各种繁杂的指令需要我们花很长时间去理解尤其是分支的概念,在大量的网上阅读文档和练习后终于上手Git。后期使用OkHttp库与部署在购置的云服务器上的数据库进行对接。

优化:

经过数个月的学习,开发,我们推出了第一个版本,该版本已经初步实现了我们预期设计是功能,但是还存在以下几个方面需要完善和改进:

  1. 电信物联网与我们自己的后台服务器之间使用的是 http 协议,存在一定的安全隐患。 且与Android高版本不兼容。正在进行https认证申请。

  2. 物联网的终端产品需要进行缩小,并且对外观进行美化。已出具设计初稿

  3. 初步开发时仅以可用性为目标,导致界面能够使用但不够美观,我们已邀请数字媒体技术专业同学帮助对APP的UI进行优化。

在进行优化的同时,我们以人员推销和广告策略对APP进行了商业推广,细节如下:

人员推销:由开发团队内部的市场推广负责人员,前往各高校、社区进行游说推广,开展宣讲会等社区活动,同时提高 APP 知名度。

广告策略:应以网络推广为主,辅以其他形式的广告推广,增强针对主要客户群体的曝光度。

设计重点难点

重点:

  1. 原型设计部分:App主色确定为绿色。主题色选用绿色(#61A584),橙色(#F59A23)为部分点缀。由于App主要特色为“求助求救”功能,而绿色象征安全、希望与和平,与App的功能相辅相成。

  2. 前端部分:统一使用最新Android版本即API28;调用百度地图API;使用OkHttp框架进行前后端交接;

  3. 后端部分:使用spring,springmvc,mybatis 框架作为底层架构;接口和实现类分为bean ,dao ,service ,controller;使用springmvc扫描controller,spring扫描其他组件;@Autowired 注释,对类成员变量、方法及构造函数进行标注,完成自动装配的工作;配置扫描器,将MyBatis接口的实现加入到ioc容器中;利用mybatis-generator在bean和dao层自动生成代码,大大减轻了代码书写的工作量;前后端请求的数据交换格式,使用统一的标准 json 格式。

  4. 服务器配置部分:后台服务器我们选择使用阿里云的服务器,使用Linux操作系统

难点:

  1. 原型设计部分:

    App主色难以确定,颜色有千种万种,主色的确定需要万里挑一。每个App都有自己的主色,主色的选择与该App的需求与功能应用有一定的联系。解决:参考大量不同功能App的界面,观察主色与应用的联系,阅读相关书籍及网络资料,学习最佳配色方案。

    App的图标设计,对图标的设计没有经验,也没有想法,无从下手。解决:参考大量的App的图标设计,观察到总共分为三类:

    纯文字类,字体需要设计/创新 (例如:淘宝,支付宝)

    纯图片类(例如:QQ,淘票票,优酷,微博,飞猪)

    图片+文字类(例如:京东)

    最后选用了第三类,图片+文字类,文字加以一定的设计,配上与APP功能相关的标志。

  2. 前端部分:

    遇到最多的是版本问题,由于我们三个开发者在写UI前端界面的时候用的虚拟机版本不同导致我们的UI界面始终不能统一, 且分别绘制了不同的自定义控件所以三个人呈现出来了三个不同风格的作品,皆与原型有所偏移。解决:及时发现了问题并统一了我们的UI

    采用了Git开源式版本管理系统,而我们之前只对SVN有所了解,学习难度大,学习成本较高。解决:通过大量的网上阅读文档和练习成功上手Git

    调用百度地图的API:上手后才知道百度地图其实有许多的坑,申请百度地图平台时SHA1码一定要正确,导入LBS包后要加入library中,AndroidManifest中除了加入权限还要加入标签等等问题,这些细节稍不注意就会使地图初始化不能定位,我们当时也困扰代码编译时没有报错,但地图一直无法定位,最后发现是没有加入so文件导入。解决:细致检查代码和参阅对比多个blog

    前后端交互:采用了OkHttp框架,但我们在实际运用中发现引用的框架已经停止维护许久。无法实现与后端交互数据的功能。解决:框架基础上重新封装了一个类,成功的与后端进行了数据交互。

  3. 后端部分:

    修改数据库:在开发过程中,遇到了必须要修改数据库的情况,这就必须要重写后端的逻辑控制代码,重新使用mybatis-generator生成代码,出现了修改架构而出现报错现象。解决:在经历数个小时的debug之后,发现再重新使用mybatis-generator生成代码时,会在原来的文件下继续生成代码,而不是覆盖该文件的代码。发现问题之后,将原文件删除,重新使用mybatis-generator生成代码,再进行修改。

  4. 服务器部分:

    Linux系统学习与操作:Linux操作系统与Windows相比有更高的安全性,但是随之而来的是操作的复杂性。Linux的操作是使用命令行控制,没有像Windows那样的界窗系统。解决:查阅相关资料后,决定在服务器上部署宝塔Linux应用,宝塔Linux给我们提供了像Windows那样的窗口操作界面,通过它,我们可以仅仅通过单击鼠标就可以完成mysql,tomcat,php,PHPmyadmin等常用软件的安装和管理。

    命名规则区别:由于服务器与本地的数据库使用不同的版本,导致两边的服务器命名规则不一样。服务器上的数据库不允许数据库名中带“.”号。在部署期间,由于服务器搭建与代码编写人员间的沟通不及时,导致这个问题被隐藏了下来。解决:通过查看日志等多方手段排查才发现并解决了这个问题。

关于我

觉得本文不错?请支持我