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(需求): 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...
随机推荐
- SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出
SQL Fundamentals || Oracle SQL语言 DUAL is a public table that you can use to view results from functi ...
- Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍
转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...
- ArcGIS API for javascript开发笔记(三)——解决打印输出的中文为乱码问题
感谢一路走来默默支持和陪伴的你~~~ ----------------------欢迎来访,拒绝转载---------------------- 1. 调用ArcGIS API的Print实 ...
- ios-多语言版本开发(三)(转载)
写在前面 iOS 多语言版本的开发(二)中我们实现了如何让用户自己去切换系统语言的功能,我们还写了Demo 以供辅助学习:但是,继以上两篇文章都是建立在项目刚刚启动或启动不久,项目中存在的中文字符串 ...
- 2018/04/01 每日一个Linux命令 之 sleep
今天看到一个很有意思的指令. sleep [睡觉/休眠] 的意思. 可以用来将目前动作延迟一段时间.之后触发 -- sleep number[smhd] 重要参数 number : 时间长度,后面可接 ...
- Pots--poj(bfs,输出路径)
http://poj.org/problem?id=3414 题意: 给你两个容量为a,b的杯子:有3个操作: 1:FILL(i):把第i个杯子从水库中装满: 2:DROP(i):把第i个杯子清空: ...
- android奔溃日期一闪而过
Android Studio日期崩溃了一闪而过,看不到原因:可以设置No Filters就可以了
- Prometheus+Grafana+Altermanager搭建监控系统
基本概念 Prometheus 时间序列化数据库,我的理解就是将数据打上标签,以时间维度存储.后面有机会在深入研究. Prometheus架构如下: Grafana Prometheus中存储的数据, ...
- phpstorm中FTP自动同步功能
首先打开PhpStorm软件,新建个项目完成以后,找到Tools, 找到 Tools->Deployment->configruation点击进行设置, 点击configruation ...
- 容器集成平台 rancher部署
下载rancher镜像 docker pull rancher/server:stable rancher/server:latest #开发版 rancher/server:stable #稳定版 ...