基于Android的地图服务系统设计与实现

news2024/11/17 15:47:14

目 录
摘 要 I
Abstract II
1绪论 1
1.1 背景及意义 1
1.2 主要方法和研究进展 1
1.3主要内容 1
1.4本论文的结构安排 1
2系统概述 2
2.1开发环境搭建 2
2.1.1 安装JDK 2
2.1.2 安装Eclipse集成开发环境 2
2.1.3 下载安装Android SDK 2
2.1.4 为Eclipse安装ADT插件 3
2.1.5 创建AVD模拟器 3
2.2相关技术 3
2.2.1百度地图 3
3.2.2 Sqlite 4
3.2.3 Android 9
3.2.4 GPS技术 9
3系统分析 11
3.1研究目标 11
3.2可行性分析 11
3.2.1经济可行性 11
3.2.2 技术的可行性 11
3.3 需求分析 11
3.4 性能分析 12
4系统实现 13
4.1功能框架设计 13
4.1.1地图模块 13
4.1.2 GPS定位模块 13
4.1.3其它功能模块 14
4.2开发准备 15
4.2.1搭建Android开发环境 15
4.2.2创建项目工程 17
4.3界面设计 19
4.3.1设计准备 19
4.3.2编程实现 20
4.5 GPS模块 24
4.5.1权限配置 24
4.5.2服务注册 25
4.5.3代码实现 25
4.5.4服务绑定 27
4.6搜索模块 27
4.6.1网络连接 28
4.6.2搜索结果解析 28
4.7路线查询 30
4.8数据存储 31
5系统测试 33
5.1进入系统 33
5.2注册登录 33
5.3进入系统 34
5.4轨迹跟踪服务 35
5.5历史轨迹查询 36
结 论 39
参考文献 40
致 谢 41
3系统分析
3.1研究目标
这个系统的目标是做出一个记录人们走动轨迹的基于Android系统的平台,方便人们知道的自己的日常走动情况。记录每次的走动的轨迹。开发一个界面简单清晰,UI友好易懂,而且无赘余功能的运动平台。
3.2可行性分析
采用开源的免费的手机安卓系统,并且利用的也是免费的百度地图API技术来实现课题。
3.2.1经济可行性
一个免费平台的软件开发时间和成本都不是太高,而且是面向个人,不会产生企业级应用的成本预算,在开发的过程中,考虑到课题的特性,需要拥有一台可以使用GPS定位,并且是安卓系统的智能手机,本人已拥有一台可用的安卓手机,其它方面,测试,编码,并不会产生太多硬设备的费用。
3.2.2 技术的可行性
本系统主要用到了目前比较流行的手机系统安卓,以及 百度地图 API技术,由于以前Android开发的经验比较少,相关知识掌握也不是特别多,所以需要付出一些努力去深入学习Android,不过在掌握了JAVA的基本开发的基础上,学习Android的过程中并没有遇到很大的难题,因为Google提供了在eclipse上面的ADK,一步一步的完善课题,并且参照到了百度地图API提供的详细的开发说明书,不懂一点问一点,慢慢完善课题也变得简单起来,在理论上是可行的。
3.3 需求分析
问题描述:
设计一款可以应用于地图服务系统重现的安卓APP,在硬件上需要一台安卓系统的可以应用GPS定位的手持设备。
程序运行的时候,要求能够实时的记录运动中的GPS经纬点数据,创建数据表,并存储,然后通过调用程序中保存好的轨迹数据,通过点与点相连,连接成一条轨迹,实现轨迹的实时记录。
为了提高程序的可用性、人性化,在UI设计方面需要做的更好一些,要比类似的市场中的GPS记录程序更加的吸引用户,还需要提高软件的交互性,来留住用户。
3.4 性能分析
程序安全性高、响应速度快、信息处理速度快。没有出现卡顿或导致死机现象。数据存储安全,由于数据流并不是很大,所以读取快,因此程序性能比较高。
4系统实现
4.1功能框架设计
4.1.1地图模块
支持百度地图在用户设备上的显示,可对地图显示的类型(图层)进行设置,满足不同情景的需求。如图4.1所示功能。
在这里插入图片描述

图4.1 地图模块功能图
4.1.2 GPS定位模块
支持GPS位置服务的注册、启动和停止,获取设备的地理位置信息(经纬度)。如图4.2所示功能。
在这里插入图片描述

图4.2 系统总体框架图

首先创建一个搜索对话框配置文件。这个文件一般命名为searchable.xml[14].,并且必须保存在项目的res/xml/目录下。配置文件的根节点必须为searchable,可以有一个或多个属性。如以下代码所示:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint" 
    android:icon="@drawable/icon"
    android:searchMode="showSearchLabelAsBadge"
/>
然后需要有一个可用于搜索的Activity,在它之内再调用搜索模块,获取并显示相应的搜索结果。当用户从搜索框执行搜索时,Android提供的搜索管理器(Search Manager)会通过ACTION_SEARCH Intent 把要搜索的内容(关键字)发送到这个Activity。针对此,需要声明它可以响应ACTION_SEARCH Intent,并且增加搜索框配置信息。
AndroidManifest.xml中配置代码如下:
<application  android:name=".DoSearch"
... >
<!-- 处理搜索 -->
<activity ...>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable" 
android:resource="@xml/searchable" />
</activity>
……
</application>
其中的android:name属性值必须为”android.app.searchable”,android:resource属性值必须引用res/xml/目录下的搜索配置文件。
为了使应用程序能够调用搜索框,还需要进行如下配置:
<!-- 调用DoSearch处理搜索 -->  
<meta-data android:name="android.app.default_searchable" android:value=".DoSearch"
/>
目前为止,自定义的搜索框已经可以正确地调用。不过,真正实现搜索功能,还需要下文中搜索模块的支持。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年最受欢迎的指纹浏览器,你知道几个?

浏览器是我们在电脑上最常使用的软件&#xff0c;以至于我们几乎忽略了它。对于用户来说&#xff0c;如果使用习惯了很难从一种浏览器切换到另一种浏览器。而指纹浏览器对于跨境人来说也是最常使用的软件工具&#xff0c;毕竟它就是为了跨境人打造的一款浏览器。那2022年这几个…

关于typescript中的extends和infer以及用法

extends extend的意思如果不是用在类的扩展中那么就表示约束在。 type Pick<T, K extends keyof T> {[P in K]: T[P]; };比如下面这个例子&#xff1a; 在Picks中K应该约束在keyof T这个类型中。 infer infer表示占位符 逆变和协变 协变&#xff1a;子类型赋给父…

云原生安全系列2:关于镜像安全必须知道的事儿

1.避免特权容器 Docker 提供了一种特权模式&#xff0c;它允许容器在本地计算机上以 root 身份运行。在特权模式下运行容器提供了该主机的功能&#xff0c;包括&#xff1a; 对所有设备的根访问权限能够篡改 AppArmor 和 SELinux 等 Linux 安全模块能够使用主机的内核功能安装…

pytorch神经网络基本骨架nn.module的使用

1.Containers 首先查看官方文档中nn.module骨架&#xff0c;其中有六个模块。 1.1Module import torch.nn as nn import torch.nn.functional as F class Module(nn.Module):def __init__(self):super(Module, self).__init__()self.conv1nn.Conv2d(1, 20, 5)self.conv2nn.C…

ESP32学习笔记 - 基于 ESP32 移植 LVGL8.3

以前写过一篇文章,讲述了如何基于ESP32 芯片移植LVGL这个GUI框架,当时是在LVGL移植好的工程lv_port_esp32上进行的,这个工程最新支持到LVGL7.9版本,关于之前的移植文章,可以参考以下链接: ESP32学习笔记 - 移植LVGL 随着LVGL不断在高频率地迭代大版本,LVGL8.x已经比以…

java基于springboot+vue的酒店预订网站——计算机毕业设计

运行环境&#xff1a; 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架springbootvue 项目介绍 民宿管理平台系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商家管理、民宿信息管理、房间类型管理、房间信息管理、…

基于Springboot+Mybatis+mysql+vue技术交流博客论坛系统

基于SpringbootMybatismysqlvue技术交流博客论坛系统一、系统介绍二、功能展示1.主页(普通用户)2.登陆、注册&#xff08;普通用户&#xff09;3.博客(普通用户)4.文章详情&#xff08;点赞、评论&#xff09;&#xff08;普通用户&#xff09;5.我的文章&#xff08;普通用户&…

模拟电子技术(六)信号的运算与处理

&#xff08;六&#xff09;信号的运算与处理基本运算电路概述比例运算电路反向比例运算电路同相比例运算电路电压跟随器加减运算电路求和运算电路加减运算电路积分运算电路微分运算电路基本微分运算电路逆函数型微分运算电路对数运算电路采用二极管的对数运算电路利用晶体管的…

配置中心微服务(Spring Cloud Config)

为什么需要配置服务中心&#xff1f; 1、统一维护2、配置内容安全与权限微服务之config server 注册到注册中心启动类加注解&#xff1a;EnableConfigServerSpringCloudApplicationEnableDiscoveryClient/{name}-{profiles}.yml <>name 微服务名称 profiles…

【electron】 打包应用修改图标和进程名字

文章目录导读开发环境打包流程制作一个大于等于256*256的icon修改package.json执行 *npm run build* 生成应用效果图踩坑icon必现大于等于 256*256图片有损icon图标要包含各种分辨率的resources\app.asar占用参考资料导读 以下内容在https://gitee.com/zkyt/electron-vue-eleme…

CobaltStrike木马免杀代码篇之python反序列化分离免杀(一)

前言 本篇文章主要用到python来对CobaltStrike生成的Shellcode进行分离免杀处理, 因此要求读者要有一定的python基础, 下面我会介绍pyhon反序列化免杀所需用到的相关函数和库 exec函数 exec函数是python的内置函数, 其功能与eval()函数相同, 但不同的是exec函数支持多行pyth…

Metabase学习教程:提问-3

时间序列比较 如何使用自定义表达式进行同比或逐月比较。 一个强大但也许不明显的东西自定义表达式让我们做的就是创造时间序列比较。例如&#xff0c;如果我们想比较2019年和2018年的每月收入或每天的用户数&#xff0c;我们可以使用Sumif和Countif 聚合功能。 第一步&…

(HAL库)实验1 点亮一个LED

1、实验准备 实验目标&#xff1a;点亮LED 器材&#xff1a;海创stm32开发板和数据线 2、CubeMX初始化 2.1 新建工程 打开STM32CubeMX软件&#xff08;V6.6.1&#xff09;&#xff0c;点击左上角"File"&#xff0c;再点击“New Project”。 在出现的左上角搜索框…

【C语言】初识指针(二)

你可以改变你的行为&#xff0c;但改变不了你想要什么——《浴血黑帮》 目录 1、指针类型 1.1指针加减(、-)整数 1.2指针的解引用 2、野指针 2.1什么叫野指针 2.1.1指针未初始化 2.1.2指针越界访问 2.1.3指针指向的空间被释放了 2.2如何避免野指针 前言&#xff1a; 大…

150. 以前编写好能够正常运行的 SAP UI5 代码,几个月后忽然不能运行了该怎么办?

以笔者本套教材为例,每一步骤的源代码都托管在本人 Github 仓库里,每次上传之前,都确保本地测试通过。 但笔者编写过程中发现,之前测试通过的代码,可能几个月之后再执行,就会遇到白屏现象,即应用无法正常加载,或者无法在调试模式下正常加载。 举个具体的例子。本文写…

渗透测试——找寻绝对路径的方法总结

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

Nignx部署前端页面

1.在Linux找到nginx的配置 2.使用vim命令打开nginx.conf vim nginx.conf 3.找到server块 将server_name改为服务器ip地址 4.按照原有的location块新建一个同样的location块 如果有多个就新建多个 5.将要部署的前端页面上传到自己知道的linux中的位置 我这里是存放在 data/w…

靶场-DC

文章目录主机发现端口扫描扫描目录登录网页查看users库查看staff库&#xff08;密码正确&#xff09;爆破ssh端口敲门服务利用提权主机发现 nmap -sP 192.168.111.1/24 arpscan -l netdiscover -p 发现除了本机ip&#xff0c;速度快发现目标机的ip&#xff1a;192.168.111.140…

Go 语言变量

变量来源于数学&#xff0c;是计算机语言中能储存计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go 语言变量名由字母、数字、下划线组成&#xff0c;其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字&#xff1a; var identifier type 可以一次声…

基于PHP+MySQL新生报到管理系统(含论文)

每年都有大量的新生需要报到,但是很多时候因为是第一次到本校进行报到,不知道具体的报到流程和学校的安排,如果挨个的去通知无形之间会给工作人员增加工作量,目前最好的办法就是开发一套新生报到系统,让新生可以自己去查看具体的工作流程和安排 本系统是基于PHP和mysql来进行开…