摘 要
由于智能手机功能变得日益丰富,已经取代功能型手机广泛普及。Google 开源的 Android 系统的推出,加剧了智能手机行业的发展。智能手机硬件配置的不断提高,为开发 出更为丰富的手机 APP 提供了保障。 本文通过对 Android 系统软件开发的研究,结合国内 外导航应用现状, 设计并实现了基于 Android 的导航系统。系统采用 C/S 架构,按照 MVC 模式设计开发客户端和服务器端程序。 论文的主要工作如下:
⑴ 对导航应用、智能手机操作系统和 GPS 技术作了介绍,研究分析了Android 系统的 系统特征和体系结构,对高德地图 API 和其他开发工具进行了说明,并介绍了开发环境的 具体构建过程。
⑵ 介绍了 Socket 套接字的通信机制,MVC 开发模式,多线程、Android 消息机制等 软件开发技术。对客户端软件进行了需求分析,根据软件需求分析内容,最终实现了导航 系统客户端 UI 模块、登录/注册模块、自我定位模块、地址查询模块、定位好友模块、路线 查询模块、 搜索模块和实时路况模块的各项功能。介绍了 XML 布局方式,Socket 通信连接 实现过程,定位导航实现方法,编码转换, POI 搜索等关键内容。
⑶ 服务器采用轻量级设计,实现了数据库模块,通信模块,业务处理模块的各项功能。 对常用的多种数据库进行了说明与比较, 介绍了数据库的选择、 设计与实现。对通信模块 中的 Socket 通信作了阐述,通过 Socket 套接字实现了服务器与客户端的数据交换。在业务 处理模块中,通过调用通信模块和数据库模块实现了登录、注册和好友定位功能。 最后按 照系统设计要求,对系统进行了严格测试。 测试结果显示系统各个功能运行正常,可满足 出行导航要求。
关键字:Android;导航; 定位; Socket;数据库
Abstract
As the smart phone features become increasingly rich, feature phones have replaced. Google launched the free Android system, exacerbated by the development of the smart phone industry Smartphone hardware configuration continues to improve, to develop a richer mobile APP provided a guarantee. Accordint to the study of the Android system software development, this paper combines with the present situation of the navigation application, and designs and implements the navigation system based on Android. Variety of practical functions were increased. Using the C/S architecture, the navigation system was designed and
developed the client and server program according to the MVC pattern.
⑴ This paper introduces the navigation, phone operating system and GPS. It analysis the Android system, including Android system characteristics and structure. It describes the AutoNavi API and other development tools.Moreover, the development environment of the
process of building was introduced.
⑵ This paper introduces the Socket communication mechanism, MVC development model, the multi thread programming and Android message mechanism. The client is designed according to modularization. The implementation process of client UI module, login or registration module, self positioning module, address query module, locate friends module, route query module, search module and real-time traffic module are described one by one. Among them, the critical section of the XML layout, implementation process of Socket communication connection, navigation methods, encoding conversion, POI search are
described in detail.
⑶ Server using lightweight design, implentmtation the functions.of database module, communication module and business processing module A variety of commonly used databases are described and compared, and the the selection, design and implementation of the database are introduced. The Socket communication module is elaborated by which data exchange between client and server is achieved. In the business processing module, the function of login, registration and friend positioning are achieved by calling communication module. According to the system design requirements, the system is rigorously tested. Test results show that the various functions of the system are operating normally, meeting the requirements of travelling.
Key Words :Android; Navigation; Communication; Database
目 录
摘 要
Abstract
第一章 绪 论
1.1 选题背景及意义
1.2 研究现状
1.2.1 智能手机平台
1.2.2 导航系统应用
1.2.3 GPS 技术
1.3 论文结构
第二章 开发平台
2.1 Android 平台
2.1.1 Android 系统简介
2.1.2 Android 系统特征
2.1.3 Android 系统体系结构
2.2 高德地图API
2.3 开发环境构建
2.4 本章小结
第三章 Android 客户端软件模块设计与实现
3.1 需求分析
3.2 客户端软件模块结构
3.3 软件开发相关技术
3.3.1 MVC 模式
3.3.2 线程
3.3.3 Android 消息机制
3.3.4 Socket 套接字
3.3.5 Android 广播机制
3.4 功能模块设计与实现
3.4.1 客户端 UI 模块
3.4.2 登录/注册模块
3.4.3 自我定位模块
3.4.4 地址查询模块
3.4.5 定位好友模块
3.4.6 路线查询模块
3.4.7 实时路况模块
3.4.8 搜索模块
3.5 本章小结
第四章 服务器端软件模块设计与实现
4.1 服务器软件模块结构
4.2 数据库的设计
4.2.1 数据库的选择
4.2.2 数据库表设计
4.3 通信模块实现
4.4 数据库模块实现
4.5 业务处理模块
4.5.1 登录/注册实现
4.5.2 好友定位实现
4.6 本章小结
第五章 系统测试
5.1 测试环境
5.2 测试结果
5.2.1 注册/登录
5.2.2 导航/定位
5.2.3 实时路况
5.2.4 路线查询
5.2.5 搜索
5.2.6 好友定位
5.2.7 地址查询
5.2.8 多机型测试
5.3 本章小结
第六章 总结与展望
6.1 工作总结
6.2 未来展望
参 考 文 献
致 谢
第一章 绪 论
1.1 选题背景及意义
进入新世纪以来, 中国移动通信技术得到迅速发展, 3G 技术(第三代移动通信技术) 在中国已经普及,4G 技术(第四代移动通信技术)正被大力推广,手机上网的用户体验和 过去相比发生了根本变化,吸引着越来越多的人使用手机上网。中国互联网络信息中心 于 2013 年 7 月 17 日发布的《第 32 次中国互联网络发展状况统计报告》 [1]显示,截止 2013 年 6 月底, 中国的网民人数接近 6 亿, 相比 2012 年底提高了 2500 多万人。互联网 发展迅速, 普及率逐年递增。 报告中显示, 在新增加的网民中, 绝大多数采用智能手机 上网, 比例高达 70.0% ,明显超过使用其他设备 (电脑、平板等) 上网的网民比例。与 此同时, 中国手机网民的数量已经超过 4 亿, 且增长迅速。新一代通信技术的推广普及 和智能手机用户体验的不断改进,促使我国手机网民数量的迅速增加。中国的移动互联 网时代已经到来, 手机不再是简单的通信工具, 智能手机变成了许多用户身影不离的生 活必需品。用户对手机依赖的同时也对手机应用程序提出了更多的要求, 渴望出现更多 能够满足用户生活需要的软件。
根据中国社科院发布的《中国汽车社会发展报告 2012—2013》[2]显示,截至 2013 年第一季度,我国私人汽车拥有量已超过 1 亿辆, 到 2023 年前后每一百户家庭的汽车 拥有量将达到 60 辆左右。面对如此巨大的导航市场, 传统的车载导航由于其价格昂贵, 便携性差, 地图数据更新慢等缺点, 其市场占有率逐渐下降。 随着智能手机的普及, 手 机导航由于其特有的优势发展非常迅速。手机体积小重量轻,与车载导航相比便携性好。 手机导航功能丰富,不仅支持车辆导航,而且具备查询公交,自驾路线等实用功能。
1.2 研究现状
1.2.1 智能手机平台
iOS 是美国苹果公司以 Darwin 系统为基础,最初专门为 iPhone 手机开发的操作系 统。原名为 iPhone OS ,后更改为 iOS。该操作系统经过多次升级, 可运行于苹果公司 出售的 iPhone 、iPod touch 、iPad 和 Apple TV 上, 在未来, 也支持智能手表, 智能眼镜 等其他智能移动设备。 iOS 的系统架构分为四个层次: 可轻触层(the Cocoa Touch layer),
核心操作系统层(the Core OS layer),媒体层(the Media layer) 和核心服务层(the Core Services layer)。苹果公司为开发者提供了专门用于 iOS 系统应用开发的 SDK。iOS 系统 界面简单美观, 稳定性好, 操作容易, 使得它一经推出就广受好评, 但其闭源特点也决 定了它不能在其他品牌设备中使用。
为了与苹果公司竞争, Google 公司推出了Android 操作系统。随着智能手机的普及, Android 系统的市场占有率节节高升,已经超过 iOS 成为市场占有率最高的手机操作系 统。依靠 Google 公司强大的技术背景, Android 系统不断快速更新系统中暴露出的问题, 优化用户体验,增强系统安全性。截至 2013 年 8 月,Android 版本已经更新至果冻豆(Jelly Bean) 4.3 版。由于 Android 免费使用,使得该系统在不同价格区间的手机上都应用广 泛,其中在中端市场占有率超过 45% ,在高端、低端市场占有率也持续增加。
微软公司曾在早期发布过专门用于移动嵌入式设备的 Windows Mobile 系统, 该系 统在交互界面、流畅度等方面均不尽人意。为了参与手机操作系统的竞争, 微软在 2010 年的全球移动通信大展上发布了被寄予厚望的 Windows Phone 操作系统。该系统与 Windows Mobile 的设计理念完全不同, 选择多点触控的交互方式。 Windows Phone 系统 包括 People(联系人) 、Music + Video(影音) 、Games(游戏) 、Pictures(图片) 、Office(办公) 和 Marketplace(软件商店)六大核心组件, 并且支持第三方软件开发。目前, 全球范围内 的多家手机生产厂商已经发布采用Windows Phone 系统的手机, 如诺基亚的Lumia,并 且取得了不错的销量。 该系统目前的市场占有率较低,相比前两种系统, 支持该系统的 手机生产厂商仍然数量较少。
Symbian 系统最初由塞班公司开发, 2008 年被诺基亚收购。 Symbian 系统功耗少, 内存占用低。 这些特点使得 Symbian 系统在手机内存较小时依然运行良好。 Symbian 系 统专门为移动设备设计, 系统架构包含多任务、 存储器保护和多运行绪。通过节省存储 器, 清除堆栈等方式, 该系统可以在有限的资源下, 运行很长时间。诺基亚研发的多款 采用 Symbian 系统的手机销量都相当可观, 由此 Symbian 系成为当时市场占有率最高的 手机系统。但随着 Android 、iOS 的崛起, Symbian 系统迅速没落。 2011 年, 受 Android 与 iOS 的冲击, 诺基亚放弃 Symbian ,开始与微软公司合作, 将采用Windows Phone 系 统作为诺基亚手机的主要操作系统。
Blackberry 系统是由加拿大 RIM (Research In Motion)公司开发的操作系统。在功 能机时代, 采用 Blackbeery 系统的黑莓手机通过与服务器相结合, 实现了实时邮件推送 功能。 Blackbeery 系统可以更大程度的保障用户信息的完整性和机密性。 其针对商务人 士制定的移动解决方案, 使得该系统在企业用户和政府用户中间广受好评。在 iOS 与 Android 出现之前,Blackberry 的邮件实时推送功能解决了用户需要不断联网查看邮件的 麻烦。但随着其他操作系统的出现, 实时邮件推送已经变得普及, 不再是 Blackberry 系
统的专属。而在用户体验, 系统流畅度, 软件数量等方面的差距, 使得 Blackberry 系统 逐渐没落。
综上所述, Android 系统以其开源特性,系统更新快等优点,吸引了众多手机、平 板等移动设备开发厂商的青睐,也促成了 Android 系统第一的市场占有率。巨大的 Android 系统用户也激发了第三方软件开发商的激情,目前仅 Goolge play 应用市场上的 APP 数量已超过百万。越来越多优秀 APP 的出现, 使得用户能享受到更好的应用体验 。 因此, 在 Android 平台上开发手机导航系统的客户端软件, 不仅开发过程相对简单, 而 且有利于软件推广。
1.2.2 导航系统应用
导航是通过指明前行方向, 从而引导用户从始发地到达目的地的过程。 中国古代航 海事业历史悠久,古人很早就掌握了通过观测北极星位置来修正航海方向的导航方法。 指南针, 牵星术的发明帮助人类走向远洋, 探索未知的世界, 同时也推动了人类文明的 发展。在现代生活中, 经济的不断发展使得汽车逐渐变得普及, 汽车导航也随着汽车数 量的增加而与人们关系变得密切。
车载导航诞生之前, 汽车导航主要的手段是查看地图。 1980 年出现了世界上第一款 导航系统 ETAK。ETAK 系统没有 GPS 定位, 采用舱位推算方法, 在车轮上有磁珠感应 转动, 同时内置指南针来进行推算,仅能在地图上粗略估计位置, 无法指引方向。 GPS 系统建成之后,开始有厂商生产基于 GPS 定位技术的车载导航产品。基于 GPS 定位技 术的车载导航定位准确, 可满足汽车用户的出行导航需求, 但也有功能单一, 地图更新 慢,信息不全面等问题[3] 。进入智能机时代后,各种丰富的手机应用开始涌现,基于手 机的导航系统由于其功能较多,更新快等特点也逐渐变得流行。
我国车载导航产品市场竞争比较激烈, 众多的厂商都在研制生产车载导航产品。 目 前市场上的车载导航均是基于 GPS 定位技术, 根据性能, 主要分为高端和低端两大类。 高端导航产品功能较多, 包括无线通讯、上网、收看电视、收听广播等,但价格昂贵, 不适合普通民众购买; 低端导航系统具备了导航产品的一些必要功能, 但其性能较差[4]。 普通车载导航一方面价格较高, 即使便宜的低端产品也需数百元; 另一方面需要手动更 新数据,操作麻烦。除此之外,车载导航也存在无法提供公交路线, PIO 搜索等问题。 本文从以上几点出发, 研究设计一款满足大众要求, 高性能,低价格, 功能齐全, 使用 简单的导航系统,丰富导航应用市场,进一步推动导航应用向前发展。
在早期流行的手机系统中, 已经有一些较为成熟的导航应用软件,这些软件在 Android 系统出现后, 也出现在了Android 应用市场上。目前 Android 平台上比较流行的
导航应用有百度, 高德,图吧等。这些软件各有优劣, 但都存在一些相互不具备的功能。
1.2.3 GPS 技术
GPS 全称 Global Positioning System 即全球定位系统,于美国 20 世纪 60 年代开始 研制, 在 1994 年全面建成。整个 GPS 系统包括三个部分: 空间部分、地面监控部分和 用户设备部分[5]。GPS 空间部分由平均分部在六个轨道面上的 24 颗卫星构成[6]。通过合 理的分布确保了地球上任何一点都可以随时接收到不少于 4 颗卫星的信号。 GPS 卫星采 用蜂窝结构, 卫星两侧装有太阳能电池帆板, 该帆板可持续对准太阳, 为卫星不间断提 供电力。此外, 卫星还可以通过姿态控制器和轨道控制器来控制卫星的高度和角度。 GPS 卫星定位精度与星载时钟精度密切相关, 经过不断的改进, 目前的氢原子钟已使得卫星 误差降低到了 1 米[7]。
地面控制部分由 l 个主控站(Master Control Station,MCS),3 个地面天线站(Ground Antenna)和 5 个监测站(Monitor Station) 组成。主控站位于美国,是整个地面控制系 统的中心。 主控站的任务是监测各监测站, 接收其发来的消息并计算出卫星星历, 时钟 差等,然后发送到其他的地面天线站[8] 。天线站,也称为注入站,主要任务是将主控站 计算得到的卫星星历、导航电文等信息注入到相应卫星的存储器中[9] 。注入站也是监测 站, 5 个监测站不间断采集卫星数据和环境数据,监控卫星工作状态,并对数据做初步 处理后发送到主控站。 GPS 系统各个天线站和监测站均无人值守,通过网络相互通信, 接收指令执行工作。
用户设备主要为 GPS 接收机,由软件、硬件两部分组成, 一般可分为导航型、测 量型和授时型三种[10],本文中的用户设备指智能手机终端。GPS 接收机硬件部分由主机、 电源和天线组成, 主要负责捕获微弱的卫星信号; GPS 接收机软件是专门用来处理接收 到数据的后处理软件包,根据接收到的卫星信号,计算出伪距离和距离变化率等数据, 以便获得接收机位置数据。
GPS 定位的基本原理是: 根据三个以上卫星的已知空间位置, 通过采用空间距离交 会法, 最后求出 GPS 接收机的具体位置[11] 。为了确保定位精度,避免由于各种误差造 成的影响, 通常 GPS 接收机都是根据四个观测到的卫星所采集的数据计算地理位置。 卫星处于地球上空高速运行, 卫星的实时位置可以通过导航电文解算求得,只需测量出 监测站至卫星的距离,就可以求得监测站点的具体位置,具体公式如式 1.1 所示[9]:
2p1 = (xp 一 x1 )2 + (yp 一 y1 )2 + (zp 一 z1 )2
2p2 = (xp 一 x2 )2 + (yp 一 y2 )2 + (zp 一 z2 )2
2p3 = (xp 一 x3 )2 + (yp 一 y3 )2 + (zp 一 z3 )2
其中,(xj , yj , zj ) (j=1,2,3) 表示三个卫星某时刻的坐标,( xp , yp , zp ) 表示监测站点 P 的坐标, ( 1 , 2 , 3 ) 表示卫星到 GPS 接收机天线的距离。
GPS 系统具有全天候, 全球覆盖, 高精度, 高效率, 可移动定位等特点[3] 。GPS 卫 星覆盖全球 98%地区, 只要上空无遮挡物, 即使天气状况不良, GPS 系统也可以为用户 提供三维定点定速定时的高精度坐标信息。虽然 GPS 建立最初的目的是为军方服务, 但在建成之后已向民用开放,并且在 2000 年取消了对民用的信号干扰,使得民用定位 精度达到了十米。 GPS 精确定时、定位、导航以及提供时间数据等功能广泛的应用于各 个行业中。例如其定时功能被用于天文台和电视台中; 导航被用于武器、车辆和飞机等; 定位用于搜救、电子地图等。此外, 在测绘领域、城乡规划、农林资源调查、地质调查、 地形测量等方面 GPS 也被广泛应用[12]。随着社会的发展, GPS 的应用将变得更加广泛。
1.3 论文结构
论文介绍了导航系统的发展现状,分析了相关开发平台, 设计并实现了基于 Android 的导航系统。本文分别对客户端和服务器端的各模块进行了详细说明, 并对设计过程中 的相关关键技术进行了充分介绍。论文总共分为六章,各章具体内容介绍如下。
第一章主要对选题背景及意义作了介绍, 分析了目前市场上的主流智能手机操作系 统,导航应用研究现状和GPS 技术等相关内容。
第二章主要对高德地图 API、Android 开发平台,包括 Android 系统特征和体系结构 等作了较详细的说明,并介绍了系统开发所需要的开发工具和开发环境的构建过程。
第三章介绍了客户端的开发过程。 对客户端软件需求进行了分析, 介绍了客户端软 件开发所需要的相关技术, 对客户端各模块的实现过程作了详细说明。
第四章介绍了服务器端的开发过程。 对主要数据库作了阐述, 根据系统要求设计了 系统服务器数据库。对服务器三大模块的实现过程作了详细说明。
第五章在不同手机上对系统各个功能进行了测试, 介绍了测试环境和相应的测试结 果,并对测试结果进行了分析。
第六章对本文作出了总结,并对未来提出了展望。