代码改变世界

android 实践项目 总结 (修改)

2015-12-09 02:22  20159213-杨凤  阅读(347)  评论(4编辑  收藏  举报

                                 

Android手机定位与地图实现

         在一个不熟悉的环境中,获得自己的位置,选择合适的就餐地点,住宿和公交路线成为一项难题。本次的实践项目就是为了解决上述难题的,通过调用百度地图的接口实现定位、查询公交路线、寻找合适的餐饮及住宿等功能,满足人们出行功能。

 

一 需求分析

1.1 功能需求

    1)地图浏览和控制----提供国内大多数城市的浏览和对地图基本控制,如放大、缩小、卫星切换等等。

    2)搜索地点----能够根据用户提供的信息,搜索对应的位置。如火车站地点、餐馆、酒店等等。

    3)公交查询------查询某一城市的特定公交路线。

    4)我的位置---实时定位用户的位置。

1.2 性能需求

         在项目开发完成后,是否能安装在各类实体机上,并且实现预期的功能。

1.3 可扩展性需求

         在未来,随着客户需求的增加,该项目能很好的扩展,来实现更多的功能。

Axure建模 当鼠标停在搜索框中,提示的文字消失;还有一组单选按钮

 

 

二 系统设计

2.1 本系统主要分为四个模块,如下图所示:

 

1)定位功能模块----利用GPS提供的服务,得到当前用户所在的位置,并且能够根据用户的位置实时更新。

2)公交路线查询模块----可以查询城市的某一特定公交路线的行车路线,并将各站点标识出来。

3 目的地查询模块----用户通过输入具体的城市和地点信息,可以查看该地点的所处在的地图,并将红色的标点标识出来。

4)其他模块。更具用户的需求进行添加。

2.2、系统的操作流程图。

 下图为系统的操作流程图:

 

 

2.3、类的相互关系

  在百度地图几种功能的实现中他们拥有的类如下图所示:

  在这项工程中,各个子界面是相互独立存在的,从上图可看出子界面的独立存在的类和共同享有的类;共同拥有的类是实现调用接口,使图形可视化。

2.3.1、定位类的关系

 

 

 

三、系统实现

3.1 系统的实现需要百度地图的授权。首先申请KEY;申请Key后需要在androidManifest.xml取得百度给予的权利:

 

由于系统会在不同屏幕上运行,所以需要适应不同的屏幕,给用户留下好的体验实现的方式是:

3.2、主界面

        主界面的标题显示是用setText()方法实现,BMapApiDemoMap的类来展示主窗口。并通过建立一个数组demo对象将进入子界面的按钮显示出来。对过单击列表onListItemClick方法可以进入相对应的子界面中。

 

3.3、定位子界面

         通过BaiduMap是地图的操作方法与接口,并通过MapView进行显示地图的视图,默认的地图中心为天安门广场。怎么实现定位?是通过定位服务客户端类LocationClient 调用setOpenGps()方法打开手机的GPS实现实时定位。

 

       从上图中我们能看到普通、默认图标、自定义图标。它们的共能分别是定位模式按钮及定位图标按钮。定位模式是通过LocationMode类实现的,在这里定位模式有三种模式,分别为普通模式、跟随模式、罗盘模式,当点击按钮时通过OnClickListener类进行监听单击的变化,来实现不同的模式。RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮,他会自动取消同一组之前的单选按钮,进行切换定位的图标。

3.4、公交查询子界面

       PoiSearch为搜索类、BusLineSearch为城市公交查询类,这两个类的联合使用能查询公交路线。为了很好的查看公交路线的公交站点,使用popupText显示出来。下图是实例图:

 

 

 

3.5、目的地的查询模块。

       主要通过PoiSearch搜寻感兴趣的地方,实现查找。当查找不成功是,会提示未找到结果。

因为查找不可能很精确,所以用一组按钮,显示没有在图中标记感兴趣的点。如图:

 

 

 

 

四、测试

 

4.1、功能测试用例测试用例

4.1.1、定位功能的实例测试

         为了检验定位功能,做出了如下的测试:

 

         在测试中,基本符合了实时定位的要求,只是在定位界面中设置的定位模式按钮的功能没有达到要求。

4.1.2、公交查询的实例测试

 

进过上面的测试满足公交路线查询功能。

4.1.3、目的查询的实例测试

 

通过测试满足以感兴趣地点的查询。

 4.2 定位实例测试

         根据变换定位图标的形状来测试设计的功能

 

 

4.2 公交查询实例测试

当输入能容不能查到结果会自动提示

 

 

当输入正确时会出现公交路线图

 

 

4.3 地点查询实例测试

当输入的地点查找不到时

 

当输入正确的地点和名称

 

经过测试我们可以发现,设计的系统基本符合要求。

 

    五 总结

5.1 开发过程遇到的问题和解决

1、android studio 环境的搭建。开始在android studio搭建百度地图开发的环境时,一直提示导入的.jar包不正确,查找了一些android studio配置百度地图环境方式。我一 一试过依然不正确;最终放弃android studio 软件进行开发。本次项目的软件是用曾俊宏提供的eclipse软件进行开发的。

2、网上有很多android百度地图开发的教程,但是我自借鉴他们做的工程时,发先一个很大的问题他们导入的.jar包很多着找不到了,利用现在的.jar包,来写教程给的代码会出问题。因此找到一个合适的.jar 包很重要。还有他们提供的android本版本比较低,虽然在eclipse提示有问题,但是问题很快就消失了。如果我们将程序导入虚拟机或者实体机,我们导入的软件会自动退出,不能正常的工作。

3、在百度地图开发中心申请key也出现了一些问题,有可能申请的key在工程中是不起作用的。在申请时必须输入正确的eclipse 的hash值 和建立工程的包名。否则调不出百度地图的图形或者调出来图形不能满足工程的需要。

5.2 项目的不足与改进计划

 1)、在这次的项目中,算然实现的功能模块很多,但是不能有效的整合在一个界面中,给人一种界面比较乱的感觉。

2)、许多子界面的功能重合,很大的浪费了资源。需要进行代码整合和优化达到系统的优化,使用户更愿意接受。

3)程序托管在开源中国。(永远的q2)。

 5.3 感悟

在整个课程中学到了很多有益的东西

1、在学习中对知识的总结是一件很重要的事情。即能对前段学到的知识进行归纳和了解自己掌握的东西,还能为下阶段学习进行合理的安排,提高学习的效率。

2、对知识要保持求知,求知欲越强越能激发自己的学习欲望。娄老师是我很好的榜样,要向老师多学习。

3、在上周,老师的讲话,我深受启发,只有多学习多掌握知识才能找到自己的兴趣爱好,在工作中才能有更多的选择。

4、在这短短两个月中,从老师这里学到很多的知识,在以后的研究生期间会有利自己的学习。最遗憾的是没有掌握老师给我们建议的学习工具,JAVA 和android不能灵活的应用。

5、学习时间安排不合理,有畏难的思想;主要原因是大学期间懒散的思想,还保留着,在以后的学习中会克服掉。

6、在以后的研究生期间希望还能跟着娄老师学习,并提升自己的能力。