android 实践项目 总结 (修改)
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、在以后的研究生期间希望还能跟着娄老师学习,并提升自己的能力。
android 实践项目 总结 (修改)的更多相关文章
- Android 实践项目开发 总结
Android 实践项目开发 总结 课程:移动平台应用开发实践 班级:201592 姓名:杨凤 学号:20159213 成绩:___________ 指导老师:娄嘉鹏 ...
- android 实践项目四
android 实践项目四 本周主要是开发android baidumap实现公交的查询 1.权限的取得和对屏幕的支持 <uses-permission android:name="a ...
- android 实践项目三
android 实践项目三 本周我主要完成的任务是将代码进行整合,然后实现百度地图的定位与搜索功能.在这次实现的 图形界面如下: 在本周的工作中主要的实现出来定位与收索的功能,在地图中能实现了定位,显 ...
- Android实践项目汇报
Android实践项目:推箱子 推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力.游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置.这就要求玩家巧妙的运用有限的空间和通道 ...
- Android实践项目汇报总结(上)修改
微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...
- Android实践项目汇报(总结)-修改
天气客户端开发报告 1系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还可以提示 ...
- android copy项目后修改项目名
有个eclipse下的Android项目,现在因为有个需求想在复制出来一个项目,把这个项目变成两个独立项目.在同一个工作空间下不能同时存在项目名称一样的项目,所以需要修改项目名.具体操作如下: 1.修 ...
- Android实践项目汇报(二)
Google天气客户端 本周学习计划 学习布局控件和XML解析的相关知识. 看懂程序代码. 把借鉴代码成功导入到Android Studio中并运行成功. 实际完成情况 我学习到布局控件XML在res ...
- Android实践项目汇报-改(一)
Google天气客户端NABC Need(需求): 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...
随机推荐
- jquery中的ajax方法参数的用法和他的含义:
转自:https://www.cnblogs.com/huiyuantang/p/5458278.html 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.ty ...
- PL/SQL自定义函数
从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...
- 2018/04/03 每日一个Linux命令 之 lastb/last
今天还在想暴力破解一个服务器是怎么完成的....... -- lastb功能说明:列出登录系统失败的用户相关信息. -- 单独执行 lastb 时候,它会读取/var/log 下的 btmp 文件,输 ...
- 使用QT设计师-信号和槽signal-slot(第一弹)
自定义信号和槽的步骤: 1.定义信号---signal1 = pyqtSignal() 2.定义槽信号---def setSlot(self): 3.连接信号和槽函数---signal1.connec ...
- 【F12】Console命令,让js调试更简单
Console命令,让js调试更简单 一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("informa ...
- (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
根据es官网的文档执行 GET /megacorp/employee/_search { "aggs": { "all_interests": { " ...
- Tomcat修改端口和编码配置
1.打开Tomcat中server.xml文件,找到原本的8080,修改成没被占用的端口: 2.在这个标签里增加 URIEncoding="utf-8",修改请求的编码.
- [LeetCode] questions conclustion_BFS, DFS
BFS, DFS 的题目总结. Directed graph: Directed Graph Loop detection and if not have, path to print all pat ...
- !!【通达信】求教:如何对A股的所有股票按照某个选股指标的某个参数排序? - 理想论坛 中国人气最旺的股票论坛
http://www.55188.com/thread-7152852-1-1.html .401进入指标排序,然后占右键把指标更改为MACD即可.(注意401前投资面有一个点!)
- 2:1 Strus2架构
一: 二: 表示:当以/login或者login.do表示的请求过来,就使用class指定的LoginAction类来处理,处理完了返回一个结果字符串,若果结果字符串是"fail" ...