基于Android平台的百度地图开发研究

2015-08-06 06:18张波赵双明
软件导刊 2015年7期
关键词:搜索定位

张波 赵双明

摘 要:Android自发布以来,凭借其开源免费、拓展性强、兼容性好等优点迅速占据了移动平台市场的最大份额,其免费策略也极大地促进了Android平台上应用软件的发展。分析了Android平台的系统架构,对百度地图Android SDK及BaiDuMap API进行了简单介绍,最后在Android平台上实现了手机定位和城市搜索功能。

关键词:百度地图;定位;搜索;Android

DOIDOI:10.11907/rjdk.151632

中图分类号:TP317.4 文献标识码:A 文章编号:1672-7800(2015)007-0096-03

0 引言

随着无线网络技术的飞速发展和移动终端硬件水平的不断提高,智能手机及其各类应用已经成为当今人们生活中不可或缺的工具及伙伴,尤其是Android平台凭借其开源免费、拓展性强、兼容性好等优点迅速占据了移动平台市场的最大份额。以Linux内核为基础的Android操作系统采用分层设计的思想,平台开放、界面友好、易于开发,可谓是一种极具吸引力的开源终端解决方案。基于Android平台的各种应用开发,特别是和人们生活密切相关的位置服务应用开发已经成为开发者们重点关注的领域。本文分析了Android平台的系统架构,对百度地图Android SDK及BaiDuMap API进行了简单介绍,最后结合手机定位和地市搜索功能的实现对百度地图开发的基本流程进行了阐述。

1 Android平台系统架构

Android 是一个专门针对移动设备的软件集,它包括一个操作系统、中间件和一些重要的应用程序。其系统架构采用了分层架构的思想,如图1所示。从上层到底层共包括4层,分别是应用程序层、应用框架层、系统库和Android运行时以及Linux内核。

每层功能简要介绍如下:

(1)应用程序层。该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等,这些都是使用Java语言编写的。本文所讲的BaiDuMap开发就是属于这一层的应用程序,也即是说,用户开发的Android应用程序及核心应用程序是同一层次的,它们都是基于Android的系统API构建的。

图1 Android系统架构

(2)应用框架层。该层是Android开发的基础,开发人员可以完全访问核心应用程序所使用的API框架。这种架构设计简化了组件的重用,在遵循框架安全性的前提下,任何一个应用程序都可以发布其功能块并且任何其它的应用程序都可以使用其发布的功能块。也即是说,开发者甚至可以开发新的组件以供调用。

(3)本地框架和运行环境。这一层包含Libraries动态库和Android运行时。这一层大部分采用C或C++编写,所以也可以简单地将其看成是Native层[1]。其中Libraries动态库包括丰富的类库支持,例如2D和3D图像库OpenGL ES、数据库SQLite、浏览器引擎、媒体库、基于Linux底层系统C库等,它们通过组件为开发者服务,让应用开发更加简单多样。Android运行时在Dalvik Java VM 上,Dalvik 采用简练、高效的byte code格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用。

(4)Linux内核。Linux 内核是Android的核心及基础,该层由C语言实现,它所提供的服务包括安全机制、内存管理、进程管理及各类驱动,它所扮演的是位于硬件和软件堆之间的抽象层。除了标准的Linux内核外,Android还增加了内核驱动,包括Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理等,并可将其理解成专为Android定制和优化过的。

2 百度地图 Android SDK简介

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口[2]。开发者可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

百度地图Android SDK创建于2011年4月27日,作为地图移动端开发的新秀,百度地图Android SDK率先完成了地图矢量化,支持3D楼宇等更直观的地图展示效果;提出了开发包可定制化概念,用户可按功能需求下载使用开发包,使开发更灵活、程序体积更小;实现了定位功能与地图功能的分离,便于开发者更灵活地使用SDK;开放了Place详情页能力,能够帮助开发者快速构建POI详情展示页面;同时还支持多种地图覆盖物,能够帮助开发者构建样式更加丰富的地图界面。

凭借其功能全面、服务稳定、性能优异的特点,百度地图Android SDK逐渐成为市场上广泛使用的LBS产品开发工具之一。并且随着市场环境的不断变化,百度地图Android SDK还在不断取得创新和突破。截至目前,百度地图Android SDK已经更新到 v3.2.0版本,调整后的SDK整体框架更加清晰合理,接口设计更符合开发者使用逻辑,并且更加人性化、规范化;在保证key鉴权安全性的同时,对验证策略进一步优化,为开发者提供更安全可靠的LBS服务;在检索等性能方面,CPU占用率、内存等方面得到全面提升;此外,还为开发者提供了更多功能及数据服务。借助这些提升,百度地图Android SDK能够更好地帮助开发者解决LBS应用难题。

目前,百度地图LBS开放平台每天能够响应100亿次以上的定位请求(http://renqi.map.baidu.com/),依托这一海量的数据资源,百度地图能够实现在大数据领域的众多创新,也能够为开发者提供更多基于用户需求的创新功能。

3 BaiDuMap API功能介绍

目前,国内用户使用较多的地图API有Baidu、Google、MapABC和MapBar等多种Map API,其中又以Baidu和Google的地图API为主,这里仅对BaiDuMap API的功能进行简单介绍。通过查阅Map API文档,可以知道BaiDuMap API具有如下功能,如表1所示。

综上述,BaiDuMap API文档完善、示例较多,便于开发者学习借鉴。对于国内开发者而言,BaiDuMap API完全免费、维护方便,3D效果较好,模块分层独立,兼容性也较好,可以满足用户的基本需求。

4 百度地图定位及城市搜索开发实例

下面以编写一个简单的定位及城市搜索程序来说明百度地图开发的一般步骤,这些都是在Eclipse开发环境搭建成功的基础上进行的。

4.1 程序编写

(1)项目创建。首先,在Eclipse 下创建一个基于Android 4.3 版本的Android Application Project,名称为testBaiduMap。

(2)申请百度API密钥。百度地图Android SDK提供的所有服务免费,且接口使用无次数限制。需申请密钥(key)后,才可使用百度地图Android SDK。该密钥与用户的百度帐户关联,因此必须先有百度帐户,才能获得密钥。并且,该密钥与用户引用的API程序名称有关。具体申请流程可参考百度地图API官方网站(http://developer.baidu.com/map/index.php?title=首页)。

(3)下载百度地图Android SDK并导入。进行百度地图开发需要导入相关的Android SDK,用户可以结合自身需求,自定义打包下载,下载地址为(http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download),这里需要下载Android地图SDK和Android定位SDK,将baidumapapi_v2_4_0.jar和locSDK_3.1.jar文件拷贝到工程的libs目录下,将libbaidumapapi_v2_4_0.so和liblocSDK3.1.so文件拷贝到libs/armeabi目录下。

(4)修改布局文件。修改res/layout/activity_main.xml 文件的内容,在一个FrameLayout(框架布局)中,从上到下分别添加百度地图显示控件,并在相对布局中加入一个用来输入城市搜索地址名称的可编辑文本框,用来点击实现定位和搜索,中间以竖实线隔开。

(5)设置权限及添加服务。在AndroidManifest.xml 中添加使用网络功能及定位功能所需权限。

(6)实现定位和城市搜索功能。在主程序MainActivity.java中,实现定位和城市搜索功能。

4.2 运行结果

在Eclipse中运行程序,系统会启动一个Android模拟器,程序则运行在模拟器上,当然也可使用Android手机进行调试。在这里使用手机进行调试,结果如图2、图3所示。

5 结语

Android是当前最受欢迎的软件操作平台,它应用灵活、开源免费,可以自由定制,被广泛地应用在手机、平板电脑等终端设备上。本文首先介绍了Android平台的系统架构和百度地图Android SDK,对百度及谷歌两款地图API的优缺点进行了简单的分析比较,最后以一个百度地图手机定位功能的实例,对百度地图的开发流程进行了详细讲解,紧扣目前主流技术,具有较强的可操作性和一定的参考价值。下一步的工作是在此基础上,结合用户需求进行拓展开发,以实现更加个性化的应用服务。

参考文献:

[1] 邓凡平.深入理解Android:Wi-Fi、NFC和GPS卷[M].北京:机械工业出版社,2014.

[2] 百度地图API[EB/OL].http://developer.baidu.com/map/index.php?title=androidsdk.

[3] 袁冠远,罗林,刘生建. C/S架构应用程序集成百度地图方案研究[J].软件导刊,2014,13(1):39-42.

[4] 殷玥,刘伟,郭东恩. 基于百度地图API的房地产展示系统的实现[J].软件导刊,2012,11(9):163-164.

(责任编辑:黄 健)

猜你喜欢
搜索定位
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
找准定位 砥砺前行
优惠信息检索与分析
青年择业要有准确定位
网上"搜索"泄密,女自领报复情敌引来血光之灾